CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>¶
在版本 3.22 中添加。
用于创建变量 find_package()
调用 REQUIRED
。
项目中每个非 REQUIRED
find_package()
调用均可通过将变量 CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>
设置为 TRUE
来转换为 REQUIRED
。这可用于断言构建环境并确保在构建环境不成立时,构建会尽早失败。
注意,将此变量设置为 true 会破坏一些常用模式。有时候,多个 find_package()
调用用于获取与默认值不同的搜索顺序。例如,项目可以强制首先检查特定软件包的已知路径,然后再搜索任何其他默认搜索路径。
find_package(something PATHS /some/local/path NO_DEFAULT_PATH)
find_package(something)
在以上示例中,第一个调用在特定目录中查找 something
软件包。如果 CMAKE_REQUIRE_FIND_PACKAGE_something
设置为 true,那么此第一个调用必须成功,否则将发生致命错误。第二个调用永远不会有机会提供回退至默认搜索位置。
某些 CMake 自带 Find 模块甚至使用类似模式首先搜索配置文件软件包。
find_package(something CONFIG QUIET)
if(NOT something_FOUND)
# Fall back to searching using typical Find module logic...
endif()
同样,如果 CMAKE_REQUIRE_FIND_PACKAGE_something
为 true,第一个调用必须成功。它实际上意味着必须为依赖项找到配置文件软件包,并且 Find 模块逻辑永远不会被使用。