gpt4 book ai didi

c++ - CMake错误:链接器命令失败,并显示退出代码1和cpp.o文件

转载 作者:行者123 更新时间:2023-12-02 10:07:09 24 4
gpt4 key购买 nike

我正在使用CMake编译一个小项目。

这是我在CMakeLists.txt中编写的内容:

cmake_minimum_required(VERSION 3.2)
set (CMAKE_CXX_STANDARD 11)
project(DAF)

find_package(OpenCV REQUIRED)


include_directories(include)
include_directories(${OpenCV_INCLUDE_DIRS} )


file(GLOB Src_Sources "src/*.cpp")
file(GLOB Test_Sources "test/*.cpp")


add_executable(executable ${Src_Sources} ${Test_Sources})

target_link_libraries( executable include ${OpenCV_LIBS} )

我有两个目录src和test。 src目录仅包含保存功能的文件,而test目录包含主文件。

一旦我使用 cmake命令,然后再使用 make命令,我将收到此错误:
Scanning dependencies of target executation
[ 25%] Building CXX object CMakeFiles/executation.dir/src/image.cpp.o
[ 50%] Building CXX object CMakeFiles/executation.dir/test/starter_1.cpp.o
[ 75%] Linking CXX executable executation
ld: library not found for -linclude
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [executation] Error 1
make[1]: *** [CMakeFiles/executation.dir/all] Error 2
make: *** [all] Error 2

所以我发现奇怪的是它创建了 .cpp.o文件。那是正常的吗?

然后我该如何解决 library not found for -linclude错误呢?

最佳答案

是的,对于CMake来说,获取源文件的名称并在编译各个目标文件时附加.o是正常的。例如,源文件image.cpp将被编译为image.cpp.o。 CMake生成的Makefile将为每个源文件包含一个唯一的目标<someSourceFileName>.o,其中<someSourceFileName>可以是.cc.cpp.c等。

错误:

ld: library not found for -linclude


表示您已尝试将名为 include的库链接到可执行文件。这可能不是您想要的。看来 include实际上是您的包含目录,并且您已经在CMake中使用以下行指定了包含目录:
include_directories(include)

要消除该错误,只需从 include 命令中取出 target_link_libraries(),如下所示:
target_link_libraries( executable ${OpenCV_LIBS} )

关于c++ - CMake错误:链接器命令失败,并显示退出代码1和cpp.o文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59654144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com