【发布时间】:2013-09-12 18:02:54
【问题描述】:
尝试制作我下载的程序时出现以下错误。
CMakeFiles/ptcloud_vslam_node.dir/src/nodes/ptcloud_vslam_node.cpp.o:未定义对符号'pcl::console::print(pcl::console::VERBOSITY_LEVEL, char const*, ...)'的引用
/usr/bin/ld: 注意:'pcl::console::print(pcl::console::VERBOSITY_LEVEL, char const*, ...)' 在 DSO /opt/ros/groovy/lib 中定义/libpcl_common.so.1.6 所以尝试将它添加到链接器 命令行
/opt/ros/groovy/lib/libpcl_common.so.1.6:无法读取符号:无效操作
我尝试在我的 cmake 文件中添加以下内容
LINK_DIRECTORIES(/opt/ros/groovy/lib/libpcl_common.so.1.6)
TARGET_LINK_LIBRARIES(ptcloud_vslam_node libpcl_common.so.1.6)
但是在运行 cmake 时出现以下错误
CMakeLists.txt:51 (TARGET_LINK_LIBRARIES) 处的 CMake 错误: 无法为目标“ptcloud_vslam_node”指定链接库,这不是 由该项目构建。
我应该对我的 cmake 文件进行哪些修改以修复链接错误?
非常感谢
【问题讨论】:
-
您只能在调用函数时指定 CMake 已识别的实际目标上链接到的库。在 TARGET_LINK_LIBRARIES 之前是否正确指定了 ptcloud_vslam_node?span>
-
下面是在TARGET_LINK_LIB之后定义的
# stereo & ptcloud VSLAM as a ROS node rosbuild_add_executable(ptcloud_vslam_node src/nodes/ptcloud_vslam_node.cpp) target_link_libraries(ptcloud_vslam_node vo ${Boost_LIBRARIES})是你说的规范吗?