ROS功能包中定义与实现分装在头文件与源文件中的配置
代码编写与普通头文件和源文件相同,重点在于CMakeLists的编写配置
1. 编写头文件
在功能包的 include/包名/ 目录下编写头文件
2. 编写源文件
3. 编写CMakeLists
首先修改include_directories,让include_directories中的include生效
include_directories(
include
${catkin_INCLUDE_DIRS}
)
然后添加对应库
一组头文件与源文件对应一个库(如果直接在头文件中实现,没有源文件的话不需要添加库) 在这里的示例中我们需要添加两个库,一个can_bus,一个socketcan
各个命令写在CMakeLists中对应注释下方即可
add_library(can_bus #此处为库的名称,一般即为头文件名称(不带后缀)
include/can_comm/can_bus.h #指明库对应的头文件路径. 为相对于CMakeLists的路径
src/can_bus.cpp #指明库对应的源文件路径
)
add_library(socketcan
include/can_comm/socketcan.h
src/socketcan.cpp
)
add_dependencies(can_bus
${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}
)
add_dependencies(socketcan
${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}
)
target_link_libraries(can_bus
${catkin_LIBRARIES}
)
target_link_libraries(socketcan
${catkin_LIBRARIES}
)
最后在节点的链接库中加上需要调用的库即可
target_link_libraries(can_send
can_bus
socketcan
${catkin_LIBRARIES}
)