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 模块逻辑永远不会被使用。

另请参阅 CMAKE_DISABLE_FIND_PACKAGE_<PackageName> 变量。