Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake抱怨在生成版本时找不到调试库_Cmake - Fatal编程技术网

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})