https://github.com/ApolloAuto/apollo/blob/master/docs/01_Installation%20Instructions/apollo_build_and_test_explained.md
apollo.sh
的用法./apollo.sh --help
可以编译整个模块,也可以单独编译某一个子模块./modules
为简单起见,Apollo 6.0 及以后引入了 bash apollo.sh build [module]
概念,以取代之前 Apollo 版本中的 build_cyber、build_planning 等概念。
# 普通编译整个模块
bash apollo.sh build
# 仅仅普通编译构建整个规划模块(modules/planning 目录下的所有目标):
bash apollo.sh build planning
apollo.sh build 编译类型 | 说明 |
---|---|
bash apollo.sh build | 编译整个apollo项目 |
bash apollo.sh build [modules] | 只编译某一个模块,如bash apollo.sh build planning |
build_dbg/build_opt | debug或者优化模式构建 |
build_cpu/build_gpu | 以cpu或者gpu模式联编,bazel build --config=cpu,bazel build --config=gpu |
build_opt_gpu | opt与gpu 的联编,等同于 bazel build --config=opt --config=gpu |
build_nvidia | 以 GPU 模式运行 NVIDIA GPU 目标机的联编,bazel build --config=gpu --config=nvidia |
bazel build [other options] -c fastbuild //modules/planning/...
当键入 bash apollo.sh build_dbg planning 时,实际等效是在指示 Bazel 运行:
bazel build [other options] --config=dbg //modules/planning/...
请注意,--config=dbg
等价于 -c dbg
# 等价
bash apollo.sh build_opt cyber
bazel build [other options] -c opt //cyber/...
bazel build --config=cpu
bazel build --config=gpu
有三种 USE_GPU: USE_GPU_HOST、USE_GPU_TARGET 和 USE_GPU。
如果没有指定是执行 CPU 还是 GPU 构建,构建脚本会根据 Docker 环境的 GPU 能力自动决定。
在支持 GPU 的 Apollo 容器中运行 CPU 构建是没问题的,而在仅支持 CPU 的容器中运行 GPU 构建则会失败。
根据设计,–config=cpu 和 --config=gpu 是相互排斥的。运行 apollo.sh 联编时,最多只能指定其中一个。
由于 bazel test 继承了 bazel build 的所有选项,因此上述讨论也适用于 apollo.sh test。
# 在 `cyber` 目录下运行单元测试
bash apollo.sh test cyber
bazel test [--config=cpu|--config=gpu] //cyber/...
# 在 CPU 模式下运行所有单元测试
bash apollo.sh test --config=cpu
bazel test --config=cpu //...
在 GPU 模式下运行规划模块的单元测试
bash apollo.sh test --config=gpu planning
bazel test --config=gpu //modules/planning/...
bash apollo.sh build
,编译成功以后,将显示如下字样(02:26:51) INFO: Elapsed time: 849.925s, Critical Path: 164.47s
(02:26:52) INFO: 26743 processes: 18504 internal, 8239 local.
(02:26:52) INFO: Build completed successfully, 26743 total actions
+ set +x
==============================================
[ OK ] Done building apollo. Enjoy!
==============================================