ROS Noetic自定义Message时CMakeLists.txt报错的修复方法咨询
解决ROS Noetic编译自定义msg时的"找不到rospy-msg-paths.cmake"错误
错误信息
CMake Error at /opt/ros/noetic/share/genmsg/cmake/genmsg-extras.cmake:271 (message): Could not find 'share/rospy/cmake/rospy-msg-paths.cmake' (searched in '/home/vrushabh/v1_wiki_ws/devel;/opt/ros/noetic'). Call Stack (most recent call first): robot_pkg/CMakeLists.txt:72 (generate_messages) -- Configuring incomplete, errors occurred! See also "/home/vrushabh/v1_wiki_ws/build/CMakeFiles/CMakeOutput.log". See also "/home/vrushabh/v1_wiki_ws/build/CMakeFiles/CMakeError.log". make: *** [Makefile:1440: cmake_check_build_system] Error 1 Invoking "make cmake_check_build_system" failed
问题根源
generate_messages的DEPENDENCIES中错误添加了rospy——rospy是Python客户端库,并非消息定义依赖包,CMake会尝试查找它的msg配置文件,导致报错。catkin_package部分被注释,未正确声明包的运行时依赖(如message_runtime)。
具体修改步骤
1. 移除generate_messages中的rospy依赖
找到CMakeLists.txt中generate_messages块,删除rospy条目:
generate_messages( DEPENDENCIES std_msgs geometry_msgs )
2. 启用并修正catkin_package配置
取消注释catkin_package部分,修正语法错误,并确保包含message_runtime和必要依赖:
catkin_package( # INCLUDE_DIRS include # LIBRARIES robot_pkg CATKIN_DEPENDS rospy std_msgs geometry_msgs message_runtime # DEPENDS system_lib )
注:如果你的包不需要导出头文件或库,保持
INCLUDE_DIRS和LIBRARIES的注释即可,重点是确保CATKIN_DEPENDS包含message_runtime。
编译验证
修改完成后,删除工作空间下的build和devel文件夹,重新执行编译命令:
catkin_make # 或使用catkin build catkin build
内容的提问来源于stack exchange,提问作者Vrushab Jain
相关产品推荐
相关产品推荐

