gpt4 book ai didi

c++ - CMake : Undefined reference to function

转载 作者:行者123 更新时间:2023-11-30 17:57:15 26 4
gpt4 key购买 nike

我有以下目录结构:

   ├── build (empty dir)
├── CMakeLists.txt
├── easylogging++.h
├── help.h
├── operation.h
├── operation_list.h
├── operations
│   ├── CMakeLists.txt
│   ├── matchcount.cc
│   └── matchcount.h
└── ops_toolkit.cc

我是 CMake 新手,正在尝试编写 CMakeLists.txt。我的 matchcount.h 有一个签名,其实现在 matchcount.cc 中(作为典型的 C/C++ 结构)。以下是我在基本目录中的 CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
project(ops_toolkit)

add_subdirectory(operations)

add_executable(ops_toolkit ops_toolkit.cc)
set(CMAKE_CXX_FLAGS "-std=c++0x")

下面是操作目录中的

include_directories(${ops_toolkit_SOURCE_DIR}/operations)
link_directories(${ops_toolkit_BINARY_DIR}/operations)
set(all_operations_HEADER operations/matchcount.h)
set(all_operations_SOURCES operations/matchcount.cc)

我收到名为 int matchcount(int, const char**) 的函数签名的 undefined reference ,并在下面进行提示

dev:~/work/ops_toolkit/build$ make
Scanning dependencies of target ops_toolkit
[100%] Building CXX object CMakeFiles/ops_toolkit.dir/ops_toolkit.cc.o
Linking CXX executable ops_toolkit
CMakeFiles/ops_toolkit.dir/ops_toolkit.cc.o: In function `__static_initialization_and_destruction_0(int, int)':
ops_toolkit.cc:(.text+0x249): undefined reference to `operations::matchcount(int, char const**)'
collect2: ld returned 1 exit status
make[2]: *** [ops_toolkit] Error 1
make[1]: *** [CMakeFiles/ops_toolkit.dir/all] Error 2
make: *** [all] Error 2

有人可以帮我解决这个问题吗?谢谢

最佳答案

问题来自于 add_subdirectory 及其关联的 CMakeLists.txt(./operations 中的那个),这是不正确的,请参阅 this SO question for the implications of the add_subdirectory command .

为了清楚起见,我还建议您将 include_directorieslink_directories 放在主 CMake 文件中。

关于c++ - CMake : Undefined reference to function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12930093/

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