需求
您需要在 ADE 容器中,或者手动安装了依赖项。 请参阅 安装 。
如果您还没有这样做,请使用以下方式获取源代码
$ cd AutowareAuto
$ vcs import < autoware.auto.$ROS_DISTRO.repos |
或者,您可以选择默认 Cyclone DDS 以外的 DDS 实现: 选择 DDS 供应商
如果运行测试或演示,还请使用以下命令提取二进制文件
$ git lfs pull --exclude="" --include="*" |
使用 colcon 默认值
强烈建议使用 Autoware.Auto 提供的 colcon 默认文件,以确保二进制文件始终使用相同的标志构建。
通过键入以下内容测试所需的环境变量 COLCON_DEFAULTS_FILE 是否已正确设置:
$ 回声 $COLCON_DEFAULTS_FILE |
如果输出为空,请按照以下说明进行配置。
ADE内部
根据使用 ADE 安装 创建一个全新的 ADE 主页后 , .bashrc 将填充 以设置 COLCON_DEFAULTS_FILE 环境变量。
要将 colcon 默认配置文件与现有 ADE 主页一起使用,请在 ADE 中键入以下内容
ade$ echo "export COLCON_DEFAULTS_FILE=/usr/local/etc/colcon-defaults.yaml" >> ~/.bashrc |
ADE外部
获取 Autoware.Auto 源代码检查附带的默认文件并将其添加到您的 shell 启动中; 例如
$ echo "export COLCON_DEFAULTS_FILE=/path/to/AutowareAuto/tools/ade_image/colcon-defaults.yaml" >> .bashrc |
或者在发出编译命令的终端中手动导出变量; 例如
$ export COLCON_DEFAULTS_FILE=/path/to/AutowareAuto/tools/ade_image/colcon-defaults.yaml |
如何构建代码
要在 Autoware.Auto 中构建所有包,请导航到 AutowareAuto 目录并运行
始终 colcon build 从存储库根目录运行很重要。 如果一切顺利,您应该 不会 在屏幕上看到“失败”,尽管“包有标准错误输出”是可以的。
有关影响代码构建方式的更多详细信息, 请参阅 编译优化和调试参数。
要验证一切是否按预期工作,请查看所有测试是否通过:
ade$ colcon 测试
ade$ colcon 测试结果 --verbose |
第一个命令将运行附加到工作区中的包的测试。 第二个命令为您提供了测试通过哪些测试失败的详细输出。
高级选项
ROS 2 使用 colcon 构建系统。 有关选项和标志的更多信息和详细信息,请查看
并查看 colcon 文档 。 下面列出了一些最有用的选项。 请注意, colcon 选项用下划线而不是破折号拼写——这是拼写错误的常见原因。
选择要构建的包
只构建一个包:
colcon build --packages-select <package_name> |
请注意,这不会自动递归地构建或重建其依赖项。 要做到这一点:
colcon build --packages-up-to <package_name> |
这些选项也被 colcon test .
编译优化和调试参数
为所有包添加编译器标志,例如启用未定义的行为清理程序:
colcon build --cmake-args -DCMAKE_CXX_FLAGS="-fsanitize=undefined" |
在构建 Autoware.Auto 时,以下是编译构建类型的一些常见选项:
- Release :优化和快速
- Debug :带有调试标志但速度较慢,因为并非应用了所有编译优化
- RelWithDebInfo : 快速并且允许调试到相当程度
笔记
使用 Autoware.Auto 附带的 colcon 默认配置文件 时,默认构建类型为 RelWithDebInfo .
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug
colcon build --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo |
警告
如果未设置优化标志,则 Autoware.Auto 堆栈可能太慢而无法使用。 例如,当 CMake 构建类型已 Debug 设置或根本未设置时,可能会发生这种情况。
编辑 colcon 默认配置文件 -cmake-args 以 永久传递 extra colcon build 或选择不同的默认构建类型。 这些设置可以通过将命令行参数传递给 colcon .
autoware_auto_cmake.cmake Autoware.Auto 中的 C++ 目标是使用由 in 中的指令和该 autoware_set_compile_options() 文件中定义的函数 集中设置的附加选项构建的。 设置通过依赖于 autoware_auto_cmake 包中的包导入到包中 package.xml
< buildtool_depend > autoware_auto_cmake </ buildtool_depend > |
并将构建依赖项导入 CMakeLists.txt
ament_auto_find_build_dependencies() |
请参阅 查看编译器命令 以检查编译器标志。
笔记 无论发布类型如何,少量目标 都会停用优化标志,以减少构建时间。 要覆盖它,请调用 colcon build --cmake-args -DAUTOWARE_OPTIMIZATION_OF_SLOW_TARGETS=ON .
编译数据库生成
为了让 IDE 分析构建依赖和符号关系, 可以使用以下标志生成 编译数据库:
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=1 |
配置变量
Autoware 构建系统定义了可以设置以更改构建配置的全局变量。 例如,要在构建时启用下载工件:
colcon build --cmake-args -DDOWNLOAD_ARTIFACTS=ON |
请参阅 CMake 变量 。
清理构建输出
colcon 不擅长无状态,因此当您构建、进行更改并再次构建时,有时会得到与从头开始构建时不同的结果。 为了确保你得到一个全新的包,只需做
rm -rf {构建,安装}/my_package |
删除与该包关联的所有构建工件。 或者,如果您不想删除旧的二进制文件,您可以指定自定义构建和安装目录:
colcon build --build-base build_mybranch --install-base install_mybranch |
查看编译器命令
要查看包的编译器和链接器调用,请使用
VERBOSE=1 colcon build --packages-up-to <package_name> --event-handlers console_direct+ |
从一张白纸开始
构建 Autoware.Auto 的大多数问题是由过时的软件或旧的构建文件引起的。 要更新 ade 和它管理的 Docker 容器以及清除旧版本,请在您的 adehome/AutowareAuto 文件夹中运行以下命令:
$ ade停止
$ sudo ade 更新-cli
$ ade 开始 --update --enter
ade$ cd AutowareAuto
ade$ rm -rf build/ install/ log/ src/external/
ade$ git pull
ade$ vcs import < autoware.auto.$ROS_DISTRO.repos |
如果您在 之外使用 Autoware.Auto ade ,请尝试更新您的系统并在您的文件夹中运行以下命令 AutowareAuto 并重新构建( $ROS_DISTRO 当前发行版在哪里,例如 foxy ):
$ rm -rf 构建/安装/日志/src/external/
$ git拉
$ 源 /opt/ros/$ROS_DISTRO/setup.bash
$ vcs import < autoware.auto.$ROS_DISTRO.repos |
如果在运行这些命令后您仍然遇到问题,请参阅 支持指南 以了解在哪里提问。
|