1.5 预备知识——bazel
在 Apollo Cyber RT 中使用到了 Bazel ,鉴于部分同学之前并没有接触过,所以本节会介绍其简单使用,如果以前已经有所了解,本部分内容可以直接略过。
1.Bazel 简介
概念
Bazel 是google研发的一款开源构建和测试工具,也是一种简单、易读的构建工具。Bazel 支持多种编程语言的项目,并针对多个平台构建输出。
特点
Bazel 具有以下优势:
高级构建语言。Bazel 使用一种抽象的、人类可读的语言在高语义级别上描述项目的构建属性。与其他工具不同,Bazel 在库、二进制文件、脚本和数据集的概念上运行,使您免于编写对编译器和链接器等工具的单独调用的复杂性。
Bazel 既快速又可靠。Bazel 会缓存之前完成的所有工作,并跟踪对文件内容和构建命令所做的更改。这样,Bazel 就能知道何时需要重新构建某些内容,并且仅重新构建。如需进一步加快构建速度,您可以将项目设置为以高度并行且增量的方式进行构建。
Bazel 是多平台应用。Bazel 可在 Linux、macOS 和 Windows 上运行。Bazel 可以在同一个项目中为多个平台(包括桌面设备、服务器和移动设备)构建二进制文件和可部署软件包。
Bazel 可以扩缩。在处理具有 10 万多个源文件的 build 时,Bazel 能够保持敏捷性。它可与数以万计的代码库和用户群进行协作。
Bazel 是可扩展的。支持许多语言,您可以扩展 Bazel 以支持任何其他语言或框架。
2.Bazel基本使用流程
在Apollo的docker容器中已经安装了 Bazel,所以我们直接使用即可,Bazel 的使用也比较简单,大致流程如下:
新建 project 目录,project 目录下新建文件 WORKSPACE;
新建包,在包下新建BUILD文件;
包中编写源文件;
编辑BUILD文件;
编译;
执行。
准备工作:在 /apollo/cyber 目录下新建 demo_base_bazel 目录,后续关于 bazel 实现都存储在该目录中。接下来我们就通过不同的案例演示 bazel 的使用。