本地双击就能玩的水果忍者网页版源码,含音效、图片和完整切水果逻辑
2026/6/8 6:08:16
colcon build是 ROS 2 中用于构建(编译和安装)整个工作空间中所有包的核心命令。它会根据你的源代码(C++、Python 等)生成一系列文件和目录,目的是让这些包能在 ROS 2 系统中被正确发现、运行和使用。
下面我们详细解释:
colcon build默认会在工作空间根目录下生成4 个关键目录假设你的工作空间是~/ros2_ws,执行:
cd~/ros2_ws colcon buildros2_ws/ ├── src/ ← 你写的源码(不会动) ├── build/ ← 🔧 编译中间产物(类似 CMake 的 build 目录) ├── install/ ← 🚀 安装结果(最终可部署的“成品”) └── log/ ← 📝 构建日志(调试用)build/—— 编译过程的“工地”build/my_pkg/).o、.so、临时文件build/lib/)src/应保持干净)--cmake-args)💡 类似于你在普通 CMake 项目中手动创建的
build/目录。
install/—— 最终“交付物”(最重要!)这是 ROS 2真正能运行的环境,结构如下:
install/ ├── my_cpp_pkg/ │ ├── lib/ │ │ └── my_cpp_pkg/ ← C++ 可执行文件、库 │ ├── share/ │ │ └── my_cpp_pkg/ │ │ ├── package.xml │ │ ├── cmake/ ← CMake 配置文件(供其他包依赖) │ │ └── ... │ └── local_setup.bash ← 包级环境脚本 │ ├── my_py_pkg/ │ ├── lib/python3.x/site-packages/my_py_pkg/ ← Python 模块 │ └── share/my_py_pkg/ ← package.xml, launch 文件等 │ ├── setup.bash ← 🌟 工作空间总入口(必须 source) ├── local_setup.bash ← 本工作空间的环境设置 ├── _local_setup_util_sh.py ← 辅助脚本(生成环境变量) └── COLCON_IGNORE ← 标记此目录为 colcon 前缀ROS 2 采用“安装即部署”的设计理念:
| 目的 | 实现方式 |
|---|---|
| 让系统能找到你的包 | 通过setup.bash设置PATH,PYTHONPATH,AMENT_PREFIX_PATH |
| 支持包之间互相依赖 | C++ 包导出.cmake文件,Python 包安装到标准 site-packages |
| 与系统 ROS 隔离 | 所有内容集中在install/,不污染/usr |
| 支持 overlay(叠加) | 可以source /opt/ros/humble/setup.bash再source install/setup.bash |
✅只有
source install/setup.bash后,你的节点才能被ros2 run找到!
log/—— 构建日志(调试神器)log/latest/或log/2025-12-14_22-05-00/)build_my_pkg.log:每个包的完整编译输出colcon_build.log:总体日志除了目录,colcon还会生成一些控制文件:
| 文件 | 作用 |
|---|---|
install/COLCON_IGNORE | 告诉 colcon:“这是一个安装前缀,不要再递归扫描” |
install/_local_setup_util_sh.py | Python 脚本,动态生成环境变量设置命令(前面讲过) |
install/share/<pkg>/package.bash | 包级别的环境扩展脚本(由 ament 生成) |
install/是自包含的,可以打包分发到其他机器(只要架构兼容)。install/的结构和/opt/ros/humble/完全一致,所以能无缝 overlay。install/,由setup.bash统一激活。你写了一个 C++ 节点talker,在my_pkg中。
执行colcon build后:
install/my_pkg/lib/my_pkg/talkerros2 run my_pkg talker能运行 → 因为setup.bash把install/my_pkg/lib加入了PATHmy_pkg→ 通过find_package(my_pkg REQUIRED)找到install/my_pkg/share/my_pkg/cmake/...colcon build生成什么?为什么?| 生成项 | 用途 | 必要性 |
|---|---|---|
build/ | 编译中间文件 | ⚙️ 必需(构建过程) |
install/ | 最终可运行的包集合 | 🚀核心产出(没有它,包无法被 ROS 使用) |
log/ | 构建日志 | 🐞 调试必备 |
setup.bash等脚本 | 激活环境 | 🔑必须 source 才能使用你的包 |
💡记住:
colcon build不只是“编译代码”,更是“构建一个可被 ROS 2 识别和使用的软件环境”。
这就是为什么 ROS 2 强调“source install/setup.bash”—— 它是连接你代码和 ROS 生态系统的桥梁 🌉