CMake抱怨在生成版本时找不到调试库
我正在等待来自外部源的库的调试版本,他们已经提供了发布版本 我们使用查找。。。模块来定位库。这将导致如下结果:CMake抱怨在生成版本时找不到调试库,cmake,Cmake,我正在等待来自外部源的库的调试版本,他们已经提供了发布版本 我们使用查找。。。模块来定位库。这将导致如下结果: optimized;libfoo.a;debug;foo-NOTFOUND CMakeLists.txt文件: ... add_executable(main main.c) target_link_libraries(main ${foo}) 通过以下方式启动构建: cmake source/dir -DCMAKE_BUILD_TYPE=Release 但cmake仍然抱怨调试
optimized;libfoo.a;debug;foo-NOTFOUND
CMakeLists.txt文件:
...
add_executable(main main.c)
target_link_libraries(main ${foo})
通过以下方式启动构建:
cmake source/dir -DCMAKE_BUILD_TYPE=Release
但cmake仍然抱怨调试库丢失
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
foo
linked by target "main" in directory source/dir
这是预期的行为吗?在每次使用之前,如果不更改Find模块或强制设置foo变量,是否可以避免此问题?我已经尝试过,您无法抑制此错误。查看负责的源代码,此检查仅在
接口
链接库时跳过(您显然不希望使用链接库,因为它不会将任何内容链接到main
)
但您可以声明导致错误的名称的占位符导入的库,如:
add_library(foo-NOTFOUND STATIC IMPORTED)
为了重现您的问题并测试修复,我设置了以下CMakeLists.txt
:
cmake_minimum_required(VERSION 3.3)
project(FooNotFound)
cmake_policy(SET CMP0057 NEW)
set(foo "optimized;libfoo.a;debug;foo-NOTFOUND")
file(WRITE main.c "int main(void) { return 0; }")
if ("foo-NOTFOUND" IN_LIST foo)
add_library(foo-NOTFOUND STATIC IMPORTED)
endif()
add_executable(main main.c)
target_link_libraries(main INTERFACE ${foo})
我已经试过了,你无法抑制这个错误。查看负责的源代码,此检查仅在接口
链接库时跳过(您显然不希望使用链接库,因为它不会将任何内容链接到main
)
但您可以声明导致错误的名称的占位符导入的库,如:
add_library(foo-NOTFOUND STATIC IMPORTED)
为了重现您的问题并测试修复,我设置了以下CMakeLists.txt
:
cmake_minimum_required(VERSION 3.3)
project(FooNotFound)
cmake_policy(SET CMP0057 NEW)
set(foo "optimized;libfoo.a;debug;foo-NOTFOUND")
file(WRITE main.c "int main(void) { return 0; }")
if ("foo-NOTFOUND" IN_LIST foo)
add_library(foo-NOTFOUND STATIC IMPORTED)
endif()
add_executable(main main.c)
target_link_libraries(main INTERFACE ${foo})