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#
-
创建 Ccache 配置文件夹和文件:
mkdir -p ~/.cache/ccache touch ~/.cache/ccache/ccache.conf -
设置最大缓存大小. 默认大小为
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 在 您的开发工作流程.