c++ - CMakeLists - Make 找不到头文件

标签 c++ header include point-cloud-library

我有以下 CMakeLists 文件:

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)

project(PointCloudComparator)

find_package(PCL 1.7 REQUIRED COMPONENTS common io)

set(PCL_DIR "/usr/share/pcl-1.7/PCLConfig.cmake")
set(PCL_INCLUDE_DIRS "/usr/include/pcl-1.7")
set(PCL_LIBRARY_DIRS "/usr/lib/")


include_directories(${PCL_INCLUDE_DIRS} "/usr/include/eigen3" "include")
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable (segmentator src/segmentation.cpp include/segmentation.h)
target_link_libraries (segmentator ${PCL_LIBRARIES} 
${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES} 
"/usr/lib/libpcl_visualization.so" "/usr/lib/libpcl_keypoints.so" 
"/usr/lib/libpcl_features.so" "/usr/lib/libpcl_kdtree.so" 
"/usr/lib/libpcl_search.so" "/usr/lib/libpcl_filters.so" 
"/usr/lib/libpcl_segmentation.so" 
"/usr/lib/libpcl_sample_consensus.so")

add_executable (comparator src/comparator.cpp include/comparator.h 
include/segmentation.h)
target_link_libraries (comparator ${PCL_LIBRARIES} 
${PCL_COMMON_LIBRARIES} 
${PCL_IO_LIBRARIES} "/usr/lib/libpcl_visualization.so" 
"/usr/lib/libpcl_keypoints.so" "/usr/lib/libpcl_features.so" 
"/usr/lib/libpcl_kdtree.so" "/usr/lib/libpcl_search.so" 
"/usr/lib/libpcl_filters.so" "/usr/lib/libpcl_segmentation.so" 
"/usr/lib/libpcl_sample_consensus.so")

但是,当我尝试编译我的代码时,出现错误:

CMakeFiles/comparator.dir/src/comparator.cpp.o: In function `main':
comparator.cpp:(.text+0x3313): reference to 
`region_growing_segmentation(std::string)' not defined
collect2: error: ld returned 1 exit status

region_growing_segmentation(std::string) 是在 segmentation.h 中声明并在 segmentation.cpp 中定义的函数。 Eclipse 实际上知道函数在哪里,但是当我尝试运行 make 时,它​​只是找不到它。有什么想法吗?

问候

最佳答案

您正在构建两个独立的可执行文件(segmentatorcomparator)。每个可执行文件都由一个源文件和一个头文件组成。这就是您在 add_executable 命令中所说的。单个 add_executable 命令使用的源文件不会与您创建的任何其他可执行目标共享。

如果您有应该在两个程序之间共享的公共(public)代码,那么您应该将它放在一个单独的源文件中,然后添加到每个可执行文件中(将新的公共(public)源文件添加到 add_executable命令)。或者创建一个与这两个可执行文件链接的库目标。

关于c++ - CMakeLists - Make 找不到头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44745091/

相关文章:

c++ - 当我在C++中存储指向按值传递参数的指针时会发生什么?

C++ 关于给 Vector<Point> myVariable 赋值

c - K&R - 了解 float - 基数、尾数和基数

javascript - 无法从由 Jquery 加载到另一个 html 的 HTML 中定位类

c++ - C++中结构/类的历史是什么?

c++ - .bss 部分零初始化变量是否占用 elf 文件中的空间?

PHP - header ("Location:") 在函数内重定向而不调用函数

python - 无法使用 python 检索 CSP header

c# - Visual Studio XML 外部注释文件不起作用

Node.js 使用外部 JS 文件?