CMakeFindDependencyMacro¶
此模块提供了一个以宏命令的形式实现的命令,用于查找包的依赖项。
在 CMake 包配置文件中加载此模块,使用:
FooConfig.cmake 或 foo-config.cmake:¶include(CMakeFindDependencyMacro)
注意
此模块旨在用于 包配置文件(<PackageName>Config.cmake)。
命令¶
此模块提供以下命令
- find_dependency¶
find_dependency()宏封装了一个用于包依赖项的find_package()调用。find_dependency(<dep> [...])
它旨在用于 包配置文件(
<PackageName>Config.cmake)。find_dependency会将传递给原始find_package()调用的 `QUIET` 和 `REQUIRED` 参数转发过去。任何指定的附加参数也会被转发给find_package()。如果依赖项未找到,它会设置一个包含诊断信息的通知消息,并调用
return()来结束对正在调用的包配置文件(package configuration file)的处理,并返回到加载它的find_package()命令。
包依赖项搜索优化¶
如果 `find_dependency` 在同一目录中以与先前调用相同的参数调用,这可能是由于包依赖项的菱形结构(diamond-shaped package dependencies),则会优化掉底层的 find_package() 调用。此优化对于支持大型包依赖关系图同时避免重复搜索的组合爆炸至关重要。但是,此启发式方法无法考虑影响包行为的环境变量,例如某些包提供的 `
在 3.15 版本中更改:先前,如果包已找到,底层 find_package() 调用总是被优化掉。CMake 3.15 移除了此优化,以支持 `find_dependency` 调用参数请求不同组件的情况。
在 3.26 版本中更改:恢复了 3.15 版本之前的优化,但增加了上述启发式方法来考虑变化的 `find_dependency` 调用参数。