编译配置
创建了两个.cpp文件,需要对这两个源文件进行编译,生成可执行文件,如果是Python写的就可以跳过这一步,本身就是可执行文件
ROS使用的编译器是CMake,所以编译规则在CMakeLists.txt中设置,打开CMakeLists.txt文件,其中很多必要部分都是用注释显示的,在必要的地方打开注释,就可以得到一些必要的配置语句。
cd ~/my_catkin_ws/src/learning_communication
gedit CMakeLists.txt
1)设置头文件的相对路径
添加include文件夹,头文件都会放在功能包根目录下的include文件夹下,同时该配置还包含了ROS catkin编译器默认包含的其他文件夹,ROS默认安装路径、Linux系统路径等。
include_directories(include ${catkin_INCLUDE_DIRS})
2) 编译代码和生成可执行文件
add_executable(asker src/asker.cpp) //可执行文件的名字可以随便去,源文件是指定的
3) 设置链接库
这里因为没有使用到其他库文件,添加默认链接库即可
target_link_libraries(asker ${catkin_LIBRARIES})
4) 设置依赖
在很多应用中,我们需要定义与语言无关的消息类型,消息在编译时会生成对应语言的代码,如果编译的可执行文件依赖这些动态生成的代码,则在编译的时候需要添加依赖,
add_dependencies(asker ${PROJECT_NAME}_generate_messages_cpp)
对于本工程需要添加的代码
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(asker src/asker.cpp)
target_link_libraries(asker ${catkin_LIBRARIES})
add_dependencies(asker ${PROJECT_NAME}_generate_messages_cpp)
add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener ${PROJECT_NAME}_generate_messages_cpp)
编译过程
1)返回工作空间目录
2)catkin_make编译
cd ~/my_catkin_ws
catkin_make
运行
roscore
rosrun learning_communication asker
rosrun learning_communication listener