【发布时间】:2018-01-14 03:19:13
【问题描述】:
我有 4 个文件 world.cpp, world.hpp, Helpers/tools.cpp, Helpers/tools.hpp。
wrold.cpp 和 tools.cpp 包含各自的头文件,world.hpp 包含 tools.hpp
world.hpp/cpp 使用 tools.hpp/cpp 中定义的结构
在我添加的 CMake 文件中
target_sources(voxel-world PUBLIC ${PROJECT_SOURCE_DIR}/Helpers/tools.cpp)
和
target_sources(voxel-world PUBLIC ${PROJECT_SOURCE_DIR}/World.cpp)
因此,据我所知,生成的 make 文件应该尝试正确链接所有内容。
但是,当我尝试编译我的程序时,我收到了错误消息:
CMakeFiles/voxel-world.dir/source/World.cpp.o: In function `Chunk_Holder::Chunk_Holder()':
World.cpp:(.text+0x112a): undefined reference to `cirArray<cirArray<cirArray<Chunk*> > >::cirArray()'
CMakeFiles/voxel-world.dir/source/World.cpp.o: In function `Chunk_Holder::Chunk_Holder(int, int, int, World*)':
World.cpp:(.text+0x117c): undefined reference to `cirArray<cirArray<cirArray<Chunk*> > >::cirArray()'
World.cpp:(.text+0x11a2): undefined reference to `cirArray<cirArray<cirArray<Chunk*> > >::cirArray(unsigned int)'
World.cpp:(.text+0x11ee): undefined reference to `cirArray<cirArray<Chunk*> >::cirArray(unsigned int)'
...
...
我不确定为什么链接器找不到这些声明,因为包含语句在每个文件上。我错过了什么?
【问题讨论】:
-
并且 cirArray 的定义包含在标题中(不仅仅是声明)?
-
当我们说“定义”时,我假设我们在谈论每个函数头的实现,是吗?
标签: c++ compiler-errors cmake linker