CMAKE_SYSTEM_IGNORE_PATH

用分号分隔的列表,列出各个 find...() 命令所忽略的目录。

对于 find_program()find_library()find_file()find_path(),在列出的目录中找到的任何文件都将被忽略。所列目录不适用于递归,因此任何需要忽略的子目录也必须明确列出。 CMAKE_SYSTEM_IGNORE_PATH 不会影响这些四个命令使用的搜索前缀。要忽略搜索前缀下的各个路径(例如 binincludelib 等),每个路径都必须在 CMAKE_SYSTEM_IGNORE_PATH 中作为一个完整的绝对路径列出。 CMAKE_SYSTEM_IGNORE_PREFIX_PATH 提供了一种更合适的方式来忽略整个搜索前缀。

find_package() 也受 CMAKE_SYSTEM_IGNORE_PATH 影响,但仅针对配置模式搜索。在指定目录中找到的任何 <Name>Config.cmake<name>-config.cmake 文件都将被忽略。此外,为实现向后兼容性,在 CMAKE_SYSTEM_IGNORE_PATH 中找到的任何搜索前缀都将被跳过,但新代码应优先使用 CMAKE_SYSTEM_IGNORE_PREFIX_PATH 来忽略前缀。

忽略搜索位置在交叉编译环境中非常有用,在该环境中,一些系统目录包含不兼容但可能可链接的库。例如,在交叉编译集群环境中,这允许用户忽略包含适用于前端机器的库的目录。

CMAKE_SYSTEM_IGNORE_PATH 由 CMake 在其平台和工具链设置中填充。其目的是忽略包含不适用于目标平台而是适用于主机的、不兼容二进制文件的位置。项目或最终用户不应修改此变量,而应使用 CMAKE_IGNORE_PATH 代替。

另请参阅以下变量