目录
- 一、ament 与 colcon
- 二、colcon 模块化安装
- 三、colcon 基本使用介绍
- 3.1 常用命令
- 构建工作空间
- 清理构建结果
- 构建特定的包
- 指定构建系统
- 并行构建
- 扩展构建选项
- 3.2 其他命令
- 列出所有可用的包
- 忽略某些包
- 查看colcon文档
一、ament 与 colcon
ROS2采用了新的编译系统Ament,相比ROS1中的catkin,Ament更高效,支持跨平台编译,并能更好地集成现代构建工具链。ament_cmake和ament_python是ament生态系统中的两个重要组件,分别用于C/C++和Python软件包的构建。
ROS2采用colcon作为新的构建工具,它是一个命令行工具,用于改进构建、测试和使用多个软件包的工作流程,负责调用不同的构建系统(如ament_cmake、ament_python等)来完成软件包的构建任务。
colcon是抽象于ament之上的,ament工具链是专门服务于ROS2相关功能包的,而colcon则可以服务于任意C/C++和Python功能包,甚至Java、Rust和Go等任意语言编写的项目。它自动化了构建过程,处理了依赖关系,并设置了使用软件包的环境。colcon通过解析软件包中的 package.xml
文件来确定构建顺序和依赖项,然后调用相应的构建系统(如ament_cmake)来完成构建任务。
二、colcon 模块化安装
colcon是一个模块化的工具链,所有命令行参数都由相应的安装包提供,如下:
他们的基本功能说明如下:
python3-colcon-alias:提供别名功能,允许用户为常用的colcon命令创建简短的快捷方式。
python3-colcon-argcomplete:集成argcomplete库,为colcon命令提供命令行参数自动补全功能。
python3-colcon-bash:提供Bash脚本支持,允许colcon在Bash环境中更好地工作。
python3-colcon-bazel:为使用Bazel构建系统的项目提供colcon支持。
python3-colcon-cd:允许colcon在执行命令前自动切换到指定的工作目录。
python3-colcon-clean:提供清理构建产物的功能。
python3-colcon-cmake:为使用CMake构建系统的项目提供colcon支持。
python3-colcon-common-extensions:包含一些常用的colcon扩展。
python3-colcon-core:colcon的核心功能,包括命令行解析、日志记录、工作空间管理等。
python3-colcon-coveragepy-result:集成coverage.py,提供代码覆盖率结果的处理和报告功能。
python3-colcon-defaults:提供colcon的默认配置和设置。
python3-colcon-devtools:提供开发工具支持,如调试和性能分析。
python3-colcon-ed:与编辑器集成相关的功能。
python3-colcon-hardware-acceleration:提供硬件加速支持,可能涉及GPU或其他加速器。
python3-colcon-installed-package-information:提供已安装包的信息查询功能。
python3-colcon-lcov-result:集成LCOV,提供代码覆盖率结果的另一种处理和报告方式。
python3-colcon-library-path:管理库路径,确保构建和运行时能够找到正确的库文件。
python3-colcon-meson:为使用Meson构建系统的项目提供colcon支持。
python3-colcon-metadata:管理colcon项目的元数据。
python3-colcon-mixin:提供Mixin支持,允许通过组合的方式增强colcon的功能。
python3-colcon-notification:提供构建和测试结果的通知功能,可能通过邮件、Slack等渠道发送。
python3-colcon-output:管理colcon命令的输出,包括日志、进度信息等。
python3-colcon-override-check:检查并报告可能的配置覆盖情况,以避免意外的构建行为。
python3-colcon-package-information:提供包信息查询功能,如包的依赖关系、版本等。
python3-colcon-package-selection:允许用户选择性地构建和测试项目中的包。
python3-colcon-parallel-executor:提供并行执行构建和测试任务的功能,以提高效率。
python3-colcon-pkg-config:集成pkg-config,提供包配置信息的查询功能。
python3-colcon-powershell:提供PowerShell脚本支持,允许colcon在PowerShell环境中更好地工作。
python3-colcon-python-setup-py:为使用Python setup.py构建系统的项目提供colcon支持。
python3-colcon-recursive-crawl:提供递归遍历项目目录的功能,以发现更多的包和构建目标。
python3-colcon-rerun:允许用户重新运行之前的构建和测试任务。
python3-colcon-ros:为ROS2项目提供colcon支持,包括构建、测试、安装等。
python3-colcon-ros-distro:提供ROS发行版支持,允许用户根据特定的ROS发行版构建项目。
python3-colcon-ros-domain-id-coordinator:在ROS 2项目中协调域ID(Domain ID)的分配和使用。
python3-colcon-spawn-shell:允许用户从colcon命令中启动一个新的shell会话。
python3-colcon-test-result:处理并报告测试结果,包括测试的成功、失败、跳过等信息。
python3-colcon-zsh:提供Zsh脚本支持,允许colcon在Zsh环境中更好地工作。
一般使用时只需安装 sudo apt install python3-colcon-common-extensions
即可,一些必要的包会作为依赖自动安装,比如 python3-colcon-core
、python3-colcon-defaults
等。
三、colcon 基本使用介绍
3.1 常用命令
构建工作空间
要构建一个包含多个软件包的工作空间,首先需要导航到该工作空间的根目录,通常这个目录下会有一个 src
文件夹,里面包含了所有的源代码包。然后运行以下命令:
colcon build
这将构建 src
文件夹中的所有软件包。
清理构建结果
如果你想清理之前的构建结果,可以使用:
colcon clean
这会删除 build
和 install
目录下的所有文件。
构建特定的包
如果你只想构建特定的一个或几个包,可以使用:
colcon build --packages-select <package_name>
例如,如果你想要构建名为 my_package
的包,命令应该是:
colcon build --packages-select my_package
指定构建系统
如果你的包使用了不同于默认的构建系统(比如 ament_cmake
),你可以通过 --cmake-args
参数指定:
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
并行构建
为了加快构建过程,你可以利用多核处理器并行构建多个包。使用 -j
或 --parallel-workers
参数指定并行工作的数量:
colcon build --parallel-workers 4
扩展构建选项
colcon
支持很多其他选项,比如设置构建目录、安装目录等。你可以通过查看帮助文档来获取更多信息:
colcon build --help
3.2 其他命令
列出所有可用的包
colcon list
忽略某些包
如果你不想构建某些特定的包,可以使用 --packages-skip
参数:
colcon build --packages-skip <package_name>
查看colcon文档
colcon -h
其中 colcon verbs
列出了当前已安装的功能,如需要的功能不在列表里,需要另外安装。