Skip to content

colcon 的高级用法#

本页展示了 colcon 的一些高级和有用的用法. 如果您需要更详细的信息,请参考 colcon 文档.

常见错误#

不要从工作区根目录以外的位置运行#

请务必始终从工作区根目录运行 colcon build,因为 colcon 仅在当前目录下构建. 如果您错误地构建了错误的目录,请运行 rm -rf build/ install/ log/ 来清理生成的文件.

不要不必要地叠加工作区#

如果你在构建工作区之前已经获取了其他工作区的 setup.bash ,那么 colcon 会覆盖工作区. 您应该注意这一点,尤其是当您有多个工作区时.

执行 echo $COLCON_PREFIX_PATH,检查工作空间是否被覆盖. 如果您发现某些工作区被不必要地覆盖,请删除所有构建的文件,重新启动终端以清理环境变量,然后重新构建工作区.

有关 工作区覆盖 的更多详细信息,请参阅 ROS 2 文档.

清理构建工件#

colcon 有时会导致错误,因为旧缓存. 要删除缓存并重新构建工作区,请运行以下命令:

rm -rf build/ install/

如果您知道要删除哪些软件包:

rm -rf {build,install}/{package_a,package_b}

选择要构建的软件包#

要仅构建指定的包:

colcon build --packages-select <package_name1> <package_name2> ...

要递归构建指定的软件包及其依赖项,请执行以下作:

colcon build --packages-up-to <package_name1> <package_name2> ...

你也可以用这些选项来做 colcon test.

更改优化级别#

设置 DCMAKE_BUILD_TYPE 以更改优化级别.

警告

如果指定 DCMAKE_BUILD_TYPE=Debug 或未指定 DCMAKE_BUILD_TYPE 来构建整个 Autoware,则使用速度可能太慢.

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug
colcon build --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

更改 colcon 的默认配置#

创建 $COLCON_HOME/defaults.yaml 以更改默认配置.

mkdir -p ~/.colcon
cat << EOS > ~/.colcon/defaults.yaml
{
    "build": {
        "symlink-install": true
    }
}

有关更多详细信息,请参见 这里.

生成compile_commands.json#

compile_commands.json is used by IDEs/tools to analyze the build dependencies and symbol relationships.

您可以使用标志 DCMAKE_EXPORT_COMPILE_COMMANDS=1 生成它:

colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=1

查看编译器命令#

要查看包的编译器和链接器调用,请使用 VERBOSE=1--event-handlers console_cohesion+

VERBOSE=1 colcon build --packages-up-to <package_name> --event-handlers console_cohesion+

有关其他选项,请参见 这里.

使用 Ccache 加快重新编译速度#

缓存 是一个编译器缓存,它可以通过缓存以前的 编译,并在再次执行相同的编译时重用它们. 强烈建议希望优化构建时间的开发人员使用它,除非有特定原因需要避免它.

第 1 步:安装 Ccache#

sudo apt update && sudo apt install ccache

第 2 步:配置 Ccache#

  1. 创建 Ccache 配置文件夹和文件:

    mkdir -p ~/.cache/ccache
    touch ~/.cache/ccache/ccache.conf
    
  2. 设置最大缓存大小. 默认大小为 5GB ,但您可以根据需要增加它.这里 我们将其设置为 60GB

    echo "max_size = 60G" >> ~/.cache/ccache/ccache.conf
    

Step 3: 将 Ccache 与您的环境集成#

要确保使用 Ccache 进行编译,请将以下行添加到您的 .bashrc 文件中. 这将通过 Ccache 重定向 GCC 和 G++ 调用.

export CC="/usr/lib/ccache/gcc"
export CXX="/usr/lib/ccache/g++"
export CCACHE_DIR="$HOME/.cache/ccache/"

添加这些行后,重新加载 .bashrc 或重新启动终端会话以应用更改.

Step 4: 验证 Ccache 是否正常工作#

要确认 Ccache 设置正确并被使用,您可以检查缓存使用情况的统计信息:

ccache -s

此命令显示缓存命中率和其他相关统计信息,帮助您衡量 Ccache 在 您的开发工作流程.