问题描述
错误代码:.../utils.h:22:10: fatal error: multi_turtlebot3_navigation/RunState.h: No such file or directory #include "multi_turtlebot3_navigation/RunState.h" 其中RunState 是我自定义的message类型,位于要编译的包目录下的msg文件夹下。将整个包从源码重新编译的时候出现找不到头文件的问题。
解决办法
在解决之前CMakeLists.txt中已经包含以下条目:
find_package(catkin REQUIRED
COMPONENTS
roscpp
rospy
sensor_msgs
geometry_msgs
tf
actionlib
actionlib_msgs
std_msgs
message_generation
)
...
add_message_files(
FILES
RunState.msg
)
...
generate_messages(
DEPENDENCIES
...
std_msgs
)
...
catkin_package(
...
message_runtime
)
后面包含若干可执行以及库,其中部分可执行和库使用了RunState.msg,使用了条目#include "multi_turtlebot3_navigation/RunState.h 。
接下来只要对相应的可执行和库使用 add_dependencies(target ${${PROJECT_NAME}_EXPORTED_TARGETS}) 即可。 其中target 为相应的库或者可执行的name。 举例:
add_library(multi_nav_utils
src/utils.cpp
)
add_dependencies(multi_nav_utils ${${PROJECT_NAME}_EXPORTED_TARGETS})
其中在utils.cpp中使用了该message的头文件。
|