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