ros2 自定义消息找不到头文件或cmake报错找不到包
1. 确保自定义消息包的 CMakeLists.txt 文件含有以下语句
find_package(ament_cmake REQUIRED)
find_package(rosidl_default_generators REQUIRED)
find_package(builtin_interfaces REQUIRED)
find_package(std_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
set(msg_files ...)
set(srv_files ...)
rosidl_generate_interfaces(${PROJECT_NAME}
${msg_files}
${srv_files}
DEPENDENCIES builtin_interfaces std_msgs geometry_msgs
ADD_LINTER_TESTS
)
ament_export_dependencies(rosidl_default_runtime)
ament_package()
2. 确保依赖该自定义包的 package.xml 的 depend 标签下含有该自定义消息包的名字
3. 确保依赖该自定义包的 CMakeLists.txt 含有 find_package(自定义消息包名 REQUIRED)
和 ament_target_dependencies(target 自定义消息包名)
4. 先 source 工作空间再编译
source install/setup.bash
5.如果上述两种方式不能解决, 删除 build ,install 文件夹重新开关机后再重新编译