catkin_make 可以用 catkin build
时间: 2025-06-27 14:13:25 浏览: 14
### Catkin Make 与 Catkin Build 的区别及使用场景
#### 工具背景概述
Catkin 是 ROS 中用于构建软件包的核心工具链。`catkin_make` 和 `catkin build` 都是用来管理 CMake 构建系统的工具,但它们的设计理念和功能有所不同。
---
#### 主要区别
1. **设计目标**
- `catkin_make` 是早期版本的构建工具,主要用于单工作区环境下的简单项目构建[^1]。
- `catkin build` 则是基于 `catkin_tools` 提供的一个更高级别的构建工具,支持多工作区叠加以及更多自定义选项[^2]。
2. **并发能力**
- `catkin_make` 并发能力有限,在复杂依赖关系下容易出现问题。
- `catkin build` 改进了这一点,能够更好地利用 CPU 资源,并行化处理多个独立的任务。
3. **灵活性**
- `catkin_make` 功能较为单一,主要提供基本的编译操作。
- `catkin build` 增加了许多额外的功能,比如可以单独控制某个包的编译状态(白名单或黑名单),并且允许用户更加精细地调整构建参数[^4]。
4. **兼容性和维护情况**
- 尽管 `catkin_make` 曾经广泛使用,但由于其局限性逐渐被社区淘汰。
- 反之,虽然 `catkin build` 更加强大,但它近年来也因为缺乏活跃开发而受到一定质疑。
5. **错误恢复机制**
如果之前曾用过另一种方式(如切换到 colcon 或其他替代方案)进行编译,则可能需要清理旧目录结构才能正常运行新命令;例如当从 `catkin_make` 迁移到 `catkin build` 时通常建议先移除原有的 build/devel 文件夹后再重新执行相应指令。
---
#### 使用场景比较
| 特性 | catkin_make | catkin build |
|---------------------|--------------------------------------|-------------------------------------|
| **适用范围** | 单一工作空间的小型项目 | 大规模或多层嵌套的工作空间 |
| **易用程度** | 较低 | 较高 |
| **性能表现** | 对于小型工程尚可 | 明显优于前者 |
| **扩展性** | 不足 | 出色 |
| **推荐级别** | 已逐步被淘汰 | 推荐作为中间过渡阶段的选择 |
对于初学者来说如果只是做一些简单的实验或者学习练习的话那么继续沿用传统的做法即采用 `catkin_make` 完全是可以接受的;然而随着项目的增长和技术需求的变化则应该考虑升级至更为现代化高效的解决方案像这里提到过的 `catkin build`.
需要注意的是尽管目前仍有部分开发者偏好使用这些传统方法但是长远来看迁移向更新颖灵活框架(如Colcon)可能是更好的决定因为它代表了未来发展方向同时也获得了官方更多的技术支持.
---
```bash
# 清理旧版构建产物以便顺利迁移到新的构建系统上
rm -rf /path/to/workspace/build/
rm -rf /path/to/workspace/devel/
# 初始化一个新的 workspace (仅限首次设置)
cd ~/my_ws && catkin init
# 查看当前配置详情
catkin config --get-context
# 创建并添加一个全新的 package 至此 workspce 下面去
catkin create pkg my_new_package roscpp std_msgs
# 执行完整的构建流程
catkin build
# 展示所有已成功安装完成 packages 名字列表出来看看成果如何吧!
catkin list
# 当不再需要某些特定 artifacts 存留磁盘之上时候就可以随时清除啦~
catkin clean [-y] [--all|--build|--devel]
```
---
阅读全文
相关推荐

















