当一个库使用 CMake 定义构建并经历为自己构建安装包的麻烦时,将会出现XXXConfig.cmake
.
如果库没有办法将其目标导出到 CMake,CMake 会尝试通过提供来弥补差距FindXXX.cmake
尝试查找此类库的脚本。
在文档中,FindXXX.cmake
(模块模式),首先尝试,并且仅当失败时才尝试使用XXXConfig.cmake
(配置模式)。但这对我来说似乎真的是一种倒退。
问题是,例如,我从源代码构建了 CURL,并且 ConfigXXX 生成了与 FindXXX 不同的目标名称,因此,当尝试使用它时,它会失败,因为 FindXXX 负责 find_package 请求并加载了与 FindXXX 不同的目标名称我所期待的。
我至少可以告诉 CMake 以相反的方式做事吗?首先配置模式。
我知道我可以完全禁用模块模式,但我宁愿将其作为后备选项。
3.15版本新增:
Set CMAKE_FIND_PACKAGE_PREFER_CONFIG
to TRUE
告诉find_package()
在回退到模块模式之前首先使用配置模式进行搜索。
参考:1 https://cmake.org/cmake/help/v3.15/release/3.15.html#variables, 2 https://cmake.org/cmake/help/v3.15/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.html#variable:CMAKE_FIND_PACKAGE_PREFER_CONFIG.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)