CMake 对类的未定义引用

rafafan2010

我正在尝试使用 CMake 编译一个项目,但是我收到了对我创建的类函数的未定义引用。如果我手动创建一个 Makefile,一切都可以正常编译。但是当我使用 CMake 时,我遇到了undefined reference错误。

这是目录结构:

. ├── build ├── CMakeLists.txt ├── info │   ├── indexer.pdf │   └── search.pdf ├── Makefile ├── sample │   ├── 1 │   │   └── b.txt │   ├── 2 │   │   └── c.txt │   ├── 3 │   │   └── d.txt │   └── a.txt ├── src │   ├── cpp │   │   ├── index.cpp │   │   └── record.cpp │   ├── h │   │   ├── index.h │   │   └── record.h │   └── main.cpp ├── tests │   └── a └── todo.txt

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

# Project Name
PROJECT(indexer CXX)

# Binary dir
# Built in CMake variables:
    # CMAKE_SOURCE_DIR: the directory where cmake was executed
    # CMAKE_BINARY_DIR: where the output will go 
    # EXECUTABLE_OUTPUT_PATH: common place to put executables if         you don't want it to be CMAKE_BINARY_DIR
    # LIBRARY_OUTPUT_PATH: common place to put libraries if you don't want it to be CMAKE_BINARY_DIR

set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})

# Add additional compiler flags
# Built-ins:
#   - CMAKE_CXX_FLAGS_DEBUG = -g
#   - CMAKE_CXX_FLAGS_RELEASE = -O3 -NDEBUG
set(CMAKE_CXX_FLAGS "-std=c++0x -Wall")


include_directories("${PROJECT_SOURCE_DIR}/src/h")

# Aggregate the sources
file(GLOB SOURCES "${PROJECT_SOURCE_DIR}/src/cpp")

add_executable(indexer "${PROJECT_SOURCE_DIR}/src/main.cpp" ${SOURCES})``

错误:

CMakeFiles/indexer.dir/src/main.cpp.o: In function `parse(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Index*)':
main.cpp:(.text+0x1b5): undefined reference to `Record::Record(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)'
main.cpp:(.text+0x1ee): undefined reference to `Index::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Record)'
CMakeFiles/indexer.dir/src/main.cpp.o: In function `main':
main.cpp:(.text+0x77d): undefined reference to `Index::Index()'
main.cpp:(.text+0x84b): undefined reference to `Index::print()'
collect2: error: ld returned 1 exit status
CMakeFiles/indexer.dir/build.make:94: recipe for target 'indexer' failed
make[2]: *** [indexer] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/indexer.dir/all' failed
make[1]: *** [CMakeFiles/indexer.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

有人可以告诉我我在这里做错了什么吗?

火葬场

你的问题是线路

file(GLOB SOURCES "${PROJECT_SOURCE_DIR}/src/cpp")

这会将SOURCES变量设置目录中命名cppsrc文件。我想你的意思是

file(GLOB SOURCES "${PROJECT_SOURCE_DIR}/src/cpp/*.cpp")

这将捕获所有以扩展名结尾的文件,.cpp并将它们放入SOURCES变量中。

注意:我认为您不需要"${PROJECT_SOURCE_DIR}/src/main.cpp"作为参数传递create_executable,因为您的SOURCES变量应该已经包含main.cpp.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CMake:未定义的引用

来自分类Dev

未定义对功能CMake的引用

来自分类Dev

MinGW / CMake对ZLib的未定义引用

来自分类Dev

使用cmake对espeak的未定义引用

来自分类Dev

使用自己的库使用cmake进行未定义的引用

来自分类Dev

使用cmake共享库的未定义引用

来自分类Dev

未定义对使用CMake生成为lib .a的方法的引用

来自分类Dev

CMake CUDA C ++链接错误-对`someFunction()`的未定义引用

来自分类Dev

CUDA catkin / cmake-对`curandCreateGenerator`的未定义引用

来自分类Dev

使用cmake共享库的未定义引用

来自分类Dev

OpenCV:使用cmake时对`cv :: imread的未定义引用

来自分类Dev

CMake链接问题:对QPushButton的未定义引用

来自分类Dev

CERN-ROOT 的 CMake“未定义引用”错误

来自分类Dev

Qt Quick + CMake + 自定义 QObject 导致对“vtable”的未定义引用

来自分类Dev

C ++在ubuntu下用cmake链接boost库:对`boost :: iostreams :: zlib :: okay'的未定义引用

来自分类Dev

在Windows中使用CMake(mingw)在Qt5.14.0 static中未定义的引用

来自分类Dev

CMake + MSys2对所有内容的未定义引用(包括c ++运行时)

来自分类Dev

无法使用cmake编译项目-未定义对`ns_initparse'的引用

来自分类Dev

C ++在ubuntu下用cmake链接boost库:对`boost :: iostreams :: zlib :: okay'的未定义引用

来自分类Dev

将Boost与cmake和clang链接-未定义对符号的引用

来自分类Dev

为什么cmake在Windows上使用cygwin给出netcdf的未定义引用?

来自分类Dev

未定义对类的引用

来自分类Dev

Qt 5 cmake失败,在Hello World上未定义对vtable的引用,使用inc和src作为子目录

来自分类Dev

在Windows中使用带有CLion的CMake(mingw)在C ++中未定义的Qt5引用

来自分类Dev

使用CMAKE的“对FT_Load_Glyph的未定义引用”和其他SDL2_ttf函数

来自分类Dev

Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3

来自分类Dev

CMake-链接错误和未定义的参考

来自分类Dev

在CMake项目中链接静态库-未定义参考

来自分类Dev

Smalltalk引用尚未定义的类

Related 相关文章

  1. 1

    CMake:未定义的引用

  2. 2

    未定义对功能CMake的引用

  3. 3

    MinGW / CMake对ZLib的未定义引用

  4. 4

    使用cmake对espeak的未定义引用

  5. 5

    使用自己的库使用cmake进行未定义的引用

  6. 6

    使用cmake共享库的未定义引用

  7. 7

    未定义对使用CMake生成为lib .a的方法的引用

  8. 8

    CMake CUDA C ++链接错误-对`someFunction()`的未定义引用

  9. 9

    CUDA catkin / cmake-对`curandCreateGenerator`的未定义引用

  10. 10

    使用cmake共享库的未定义引用

  11. 11

    OpenCV:使用cmake时对`cv :: imread的未定义引用

  12. 12

    CMake链接问题:对QPushButton的未定义引用

  13. 13

    CERN-ROOT 的 CMake“未定义引用”错误

  14. 14

    Qt Quick + CMake + 自定义 QObject 导致对“vtable”的未定义引用

  15. 15

    C ++在ubuntu下用cmake链接boost库:对`boost :: iostreams :: zlib :: okay'的未定义引用

  16. 16

    在Windows中使用CMake(mingw)在Qt5.14.0 static中未定义的引用

  17. 17

    CMake + MSys2对所有内容的未定义引用(包括c ++运行时)

  18. 18

    无法使用cmake编译项目-未定义对`ns_initparse'的引用

  19. 19

    C ++在ubuntu下用cmake链接boost库:对`boost :: iostreams :: zlib :: okay'的未定义引用

  20. 20

    将Boost与cmake和clang链接-未定义对符号的引用

  21. 21

    为什么cmake在Windows上使用cygwin给出netcdf的未定义引用?

  22. 22

    未定义对类的引用

  23. 23

    Qt 5 cmake失败,在Hello World上未定义对vtable的引用,使用inc和src作为子目录

  24. 24

    在Windows中使用带有CLion的CMake(mingw)在C ++中未定义的Qt5引用

  25. 25

    使用CMAKE的“对FT_Load_Glyph的未定义引用”和其他SDL2_ttf函数

  26. 26

    Android Native:CMake 链接错误:未定义对 GL 函数的引用 - 即使包含并链接了 EGL 和 GLESv3

  27. 27

    CMake-链接错误和未定义的参考

  28. 28

    在CMake项目中链接静态库-未定义参考

  29. 29

    Smalltalk引用尚未定义的类

热门标签

归档