一、问题背景
之前新建了一个项目项目文件分布为
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。文章来源:https://www.toymoban.com/news/detail-699098.html
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)
结果成功解决文章来源地址https://www.toymoban.com/news/detail-699098.html
到了这里,关于CMake 链接时出现undefined reference to 错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!