Bazel 是一个开源构建和测试工具,类似于 Make、Maven 和 Gradle。它使用简单易懂的高级 build 语言。Bazel 支持 并针对多个平台构建输出。Bazel 支持跨多个代码库的大型代码库,以及大量用户。
优势
Bazel 具有以下优势:
高级构建语言。Bazel 使用人类可读的抽象语言,在高语义层面描述项目的构建属性。与其他工具不同,Bazel 基于库、二进制文件、脚本和数据集的概念运作,可让您免去编写对编译器和链接器等工具的各个调用的复杂性。
Bazel 快速且可靠。Bazel 会缓存之前完成的所有工作,并跟踪文件内容和构建命令的更改。这样,Bazel 便知道何时需要重新构建某些内容,并且只会重新构建这些内容。如需进一步加快 build 速度,您可以将项目设置为以高度并行和增量方式进行构建。
Bazel 是多平台模式Bazel 可在 Linux、macOS 和 Windows 上运行。Bazel 可以为多个平台(包括 桌面设备、服务器和移动设备。
Bazel 可扩缩。Bazel 在处理包含 10 万多个源文件的 build 时,能够保持敏捷性。它适用于多个代码库和数以万计的用户群。
Bazel 具有可扩展性。Bazel 支持多种语言,您还可以扩展 Bazel 以支持任何其他语言或框架。
使用 Bazel
如需使用 Bazel 构建或测试项目,您通常需要执行以下操作:
设置 Bazel。下载并安装 Bazel。
设置项目工作区, Bazel 在其中查找 build 输入和
BUILD
文件的目录,以及 存储构建输出。编写一个
BUILD
文件,告诉 Bazel 要构建的内容以及如何构建 构建容器。如需编写
BUILD
文件,请使用以下代码声明构建目标: Starlark,一种网域特有的语言。(查看示例 此处)。构建目标指定了 Bazel 将构建的一组输入工件及其依赖项、Bazel 将用于构建它的构建规则,以及用于配置构建规则的选项。
build 规则用于指定 Bazel 将使用的 build 工具(例如编译器和链接器)及其配置。Bazel 附带了许多构建规则,涵盖支持的平台上支持的语言中最常见的工件类型。
通过命令行运行 Bazel。Bazel 会将输出放置在工作区中。
除了构建之外,您还可以使用 Bazel 运行测试并查询 build,以跟踪代码中的依赖项。
Bazel 构建流程
在运行构建或测试时,Bazel 会执行以下操作:
由于之前的所有构建工作都已缓存,因此 Bazel 可以识别和重复使用已缓存的 并且仅重新构建或重新测试更改的内容。为了进一步强制执行 你可以设置 Bazel 来运行构建和测试 封闭沙盒,最大限度地减少偏差 并最大限度地提高可重现性。
操作图
这个操作图显示了构建工件、它们之间的关系 以及 Bazel 将要执行的构建操作有了这个图表,Bazel track 是 文件内容以及对操作(例如 build 或 test 命令)的更改,以及 了解之前已经完成的构建工作。借助该图表,您还可以轻松跟踪代码中的依赖项。
入门教程
如需开始使用 Bazel,请参阅开始使用或直接跳转到 Bazel 教程: