普通情况下编译文件都是使用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
  1. 同时catkin_make本质上是并行编译,合并构建。这就存在一种情况:某个编译包不被ROS所支持,会报错。这个时候应该使用catkin_make_isolated,这样每个包就独立构建,会跳过那些不支持的包。不过生成的文件名字和之前会不同,devel会变成devel_isolated

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

  3. 还有一个命令是catkin_make install, catkin_make 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

catkin_make相关推荐

  1. catkin_make后输出:No module named ‘catkin_pkg‘

    问题描述: 如何解决? 1.打开catkin_make文件,在终端输入: sudo gedit /opt/ros/melodic/bin/catkin_make 2.将python脚本解释器改为&qu ...

  2. catkin_make: command not found

    catkin_make: command not found当我们编译ros时,出现了这种错误,可以这样解决 To execute the command: > source /opt/ros/ ...

  3. catkin_make与gtest出现冲突的问题与解决

    gtest是测试时调用的,把测试禁止掉试试 catkin_make --pkg pkgname -DCATKIN_ENABLE_TESTING=0 转载于:https://www.cnblogs.co ...

  4. 更换系统后无法catkin_make universal robot 包

    1.终端出现的错误如下: /home/lx/catkin_workspace/build/universal_robot/ur_driver/setup_custom_pythonpath.sh: 4 ...

  5. catkin_make 只编译一个包

    来源于ros wiki上的问题: how to build a single package by catkin_make 一般来讲,在工作空间下,使用catkin_make 将会一次性编译src下所 ...

  6. ROS Base path和Source space不一致问题,修改文件名后无法make问题,catkin_make报错问题

    在一次在ROS 的学习实践中,将Ros工程目录名称更改了,source后,出现了base path和Source space不一致问题: 报错提示: Base path: /home/pot/catk ...

  7. 解决catkin_make时出现make[2]: *** No rule to make target ‘/usr/lib/libOpenNI2.so‘, needed by ‘*******‘。

    问题引出: catkin_make编译项目时出现下列错误: make[2]: *** No rule to make target '/usr/lib/libOpenNI2.so', needed b ...

  8. catkin_make 编译包无效(没反应)

    - catkin_make 编译指定的功能包失效? 可能是如下原因: 这时需要编译全部功能包, catkin_make -DCATKIN_WHITELIST_PACKAGES="" ...

  9. ros执行catkin_make显示 /opt/ros/noetic/share/catkin/cmake/safe_execute_process.cmake:11 (message):`错误

    ros在执行catkin_make时显式错误 RuntimeError: Multiple packages found with the same name 或者CMake Error at /op ...

最新文章

  1. 股市币市:数据分析与交易所最新公告(20190301)
  2. 天池算法赛:数据挖掘经典赛事!DCIC 2020 数字中国创新大赛启动!
  3. Java网络编程——11.非阻塞I/O
  4. 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路(1)
  5. linux_OEL5.4_安装Oracle11g中文教程图解
  6. Centos安装postgreSQL
  7. Codeforces Round #331 (Div. 2) A. Wilbur and Swimming Pool 水题
  8. 百度富文本编辑器UEditor安装配置全过程
  9. 矩阵的基本概念(等价、合同、秩...)
  10. c语言列出1~100所有素数_一次找出范围内的所有素数,埃式筛法是什么神仙算法?...
  11. java simpleentry_使用Java流生成对象
  12. HNOI2017 滚粗记
  13. 英特尔的新方向:称王集成计算设备领域
  14. 河南省第四届ACM程序设计大赛(共八道,目前只做两道。待续)
  15. ISP许可证是什么证?
  16. Mac 安装谷歌浏览器驱动
  17. 通过c语言求得一个英文句子中的单词数量
  18. 腾讯前端面试经验(一)
  19. 解决OpenCV读取图片慢的方案
  20. 【sql】sql执行顺序

热门文章

  1. GW48CK/PK2/PK/PK4 系统万能接插口与结构图信号/与芯片引脚对照表
  2. java遍历子目录_Java遍历文件夹及子目录代码实例
  3. NOI数学:莫比乌斯变换
  4. 1.13编程基础之综合应用_14求满足条件的3位数
  5. STM32H743+CubeMX-定时器TIM输出PWM(PWM Generation模式)+ 中断
  6. RTX5 | 消息队列03 - 获取消息队列里消息的数量,并一次性提取出来
  7. c 读取mysql另一个窗体中显示出来_二级ACCESS数据库4窗体的笔试题考点分析
  8. 功能强大的JavaScript 拖拽库 SortableJS
  9. 信息安全工程师笔记-云计算安全需求分析与安全保护工程
  10. C++笔记-shared_ptr与weak_ptr需要注意的地方