【发布时间】:2018-02-05 20:13:25
【问题描述】:
我们正在使用 Jenkins 2.60.2 和 CMake 3.9.1 来自动化我们的构建系统。这一切都适用于多个版本的构建工具、架构和调试/发布目标(如果所有配置都已构建和安装,那么 Debug 和 Release)。
使用find_package() 的调试 配置通常会在发现时忽略CMAKE_BUILD_TYPE。脚本在内部搜索文件和库并将位置存储在变量中。在脚本结束时,会扫描变量中的 _NOTFOUND 字符串,这是在所有参考路径/提示中都没有找到文件或库的结果。因此,如果找不到 Release 库,基本上 find_package() 将失败,并将整个包标记为未正确安装,即使构建仅对 Debug 严格感兴趣em>目标。
XXXConfig.cmake 文件通常使用对 find_package_handle_standard_args(.. PATH_TO_LIB) 的调用来扫描路径变量中的 _NOTFOUND 字符串以图书馆。这些变量通常通过较早调用 find_library(PATH_TO_LIB libname ..) 设置为 _NOTFOUND。有关更多信息,请参阅 CMake 文档。
用户确实可以使用“调试”标记调试库并使用“优化”发布库,但这在库发现期间似乎没有帮助,并且仅在链接期间使用。
有人知道如何正确处理吗?
亲切的问候
【问题讨论】:
标签: c++ jenkins cmake multi-configuration