普通情况下编译文件都是使用cmake,make工具,与此有关的内容可以参考:cmake,CMakeLists.txt,make,makefile的关系

  但ROS中还有catkin_make,不清楚他们之间的关系,写这篇了解一下,主要区别如下:

  1. 常规的编译的过程大致有两步:1.cmake 2.make catkin_make就是把这两步做了一个封装,一步即可完成。也就是catkin_make等效于以下指令:

$ cd ~/catkin_ws
$ cd src
$ catkin_init_workspace
$ cd ..
$ mkdir build
$ cd build
$cmake ../src -DCMAKE_INSTALL_PREFIX=../install -DCATKIN_DEVEL_PREFIX=../devel

注:catkin_make编译的是所有功能包,也可以单单指定一个功能包做编译,命令是:

catkin_make --pkg 功能包名
  1. catkin_make之前一般要建立src文件夹存储源码,这是默认的工作空间路径。如果没有就会报错,这直接规范了文件路径,并且直接确定了生成文件的路径,而常规的编译没有。不过catkin_make也可以特别指定读取源文件路径,命令是:
    catkin_make --source my_src
    
  2. 同时catkin_make本质上是并行编译,合并构建。这就存在一种情况:某个编译包不被ROS所支持,会报错。这个时候应该使用catkin_make_isolated,这样每个包就独立构建,会跳过那些不支持的包。不过生成的文件名字和之前会不同,devel会变成devel_isolated

  3. cmake,make过程一般是一次是执行一个源文件,如果想一键编译的话要写一个.sh文件。catkin_make编译时会编译src文件下所有的源文件,过程更加方便了

  4. 还有一个命令是catkin_make install, catkin_make install 的作用是创建一个可以运行,但不含源码的工程包,以便于给客户等其他人使用,但同时不至于泄露源码的这么一个作用(读不太懂,暂时可能还没接触到吧~)

设置编译格式,默认是DUBUG
catkin_make -DCMAKE_BUILD_TYPE=Release
清理编译过程中的文件
catkin_make clean
安装文件到install目录
catkin_make install
显示指定安装目录
catkin_make -DCMAKE_INSTALL_PREFIX=xxxx install

参考资料:

具体的caktin_make执行过程可以参考这篇:Catkin_make执行过程_jinking01的专栏-CSDN博客_catkin_make
具体的caktin_make install执行过程可以参考这篇:
ROS中catkin_make install的用法_gglin的博客-CSDN博客

catkin_make_isolated 介绍_study,come on的博客-CSDN博客
转:make cmake和catkin_make的区别_fantasysolo的博客-CSDN博客_catkin_make