一、问题背景
之前新建了一个项目项目文件分布为
1. src/MROR.cpp
2.include/MROR.h
3.main.cpp
执行cmake出现undefined reference toxx,显示main函数中的类成员函数调用没有声明,但是所有声明已经在MROR.h中写了
二、解决方法
我查了很多网上资料
解决方法
1) 可能MROR.cpp文件没有链接到项目,且cpp文件中含pcl库,可能未编译链接
include_directories(${PCL_INCLUDE_DIRS} include)
add_library(${PROJECT_NAME}_core src/MROR.cpp)
target_link_libraries(${PROJECT_NAME}_core ${PCL_LIBRARIES})
add_executable(MROR_exe main.cpp src/MROR.cpp)
target_link_libraries(MROR ${PCL_LIBRARIES} ${PROJECT_NAME}_core)
结果还是报错
2) 可能项目中使用了函数模板,导致cmake报错失败。
将cpp实现文件与h文件合并为hpp。
include_directories(
${PCL_LIBRARIES}
include)
find_package(PCL 1.8 REQUIRED)
#生成链接库
add_library(${PROJECT_NAME}_core include/MROR.hpp)
#生成可执行文件
add_executable(MROR_exe main.cpp)
set_target_properties(${PROJECT_NAME}_core PROPERTIES LINKER_LANGUAGE CXX)
target_link_libraries(MROR_exe ${PCL_LIBRARIES} ${PROJECT_NAME}_core)
结果成功解决