系统环境:Ubuntu16.04
编译代码:
1.设置需要编译的代码和生成的可执行文件
2.设置链接库
3.设置依赖
进入到功能包目录下,打开CMakeLists.txt。
在 CMakeLists.txt 文件中加入几条语句:
add_executable(server src/server.cpp)
target_link_libraries(server ${catkin_LIBRARIES})
add_dependencies(server ${PROJECT_NAME}_gencpp)
add_executable(client src/client.cpp)
target_link_libraries(client ${catkin_LIBRARIES})
add_dependencies(client ${PROJECT_NAME}_gencpp)
回到工作空间目录下:$ catkin_make,进度显示100%即表示编译成功。
将生成两个可执行程序"server"和"client",这两个可执行程序默认存放地址为 ~/工作空间/devel/lib/。可以直接调用可执行程序,或者使用rosrun命令去调用它们。它们不会被装在/bin目录下,因为当在系统里安装这个包的时候,这样做会污染PATH变量。
注意:
1.add_executable
2.target_link_libraries
3.add_dependencies
先设置需要编译的代码和生成的可执行文件,再设置链接库,最后设置依赖。这个顺序不要颠倒,否则有可能出错。
测试:
打开一个终端,启动服务器:$ rosrun <功能包> server
Server节点启动后的日志信息
再打开一个终端,启动客户端:$ rosrun <功能包> client data1 data2
Client启动后发布服务请求,并成功接收到的反馈结果
Server接收到服务调用后完成加法求解,并把结果反馈给Client
测试完成。