Catkin工作原理
catkin编译的工作流程如下:
- 首先在工作空间catkin_ws/src/下递归的查找其中每一个ROS的package。
- package中会有package.xml和CMakeLists.txt文件,Catkin(CMake)编译系统依据CMakeLists.txt文件,从而生成makefiles(放在catkin_ws/build/)。
- 然后make刚刚生成的makefiles等文件,编译链接生成可执行文件(放在catkin_ws/devel)。
也就是说,Catkin就是将cmake与make指令做了一个封装从而完成整个编译过程的工具。catkin有比较突出的优点,主要是:
操作更加简单
一次配置,多次使用
跨依赖项目编译
使用catkin_make进行编译
$ cd ~/catkin_ws #回到工作空间,catkin_make必须在工作空间下执行
$ catkin_make #开始编译
$ source ~/catkin_ws/devel/setup.bash #刷新坏境
编译完成后,如果有新的目标文件产生(原来没有),那么一般紧跟着要source刷新环境,使得系统能够找到刚才编译生成的ROS可执行文件。这个细节比较容易遗漏,致使后面出现可执行文件无法打开等错误。
(cmake处理工程文件之间的关系,make调用了g++来编译程序
一般的编译cmake的做法:
mkdir build
cd build
cmake…
make
将中间文件放入到build中,带发布程序时,将其删除即可。
)