Bazel 简介

报告问题 查看来源 每晚 · 7.4。 ,了解所有最新动态。 7.3 · 7.2 · 7.1敬上 · 7.0 · 6.5

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 构建或测试项目,您通常需要执行以下操作:

  1. 设置 Bazel。下载并安装 Bazel

  2. 设置项目工作区, Bazel 在其中查找 build 输入和 BUILD 文件的目录,以及 存储构建输出。

  3. 编写一个 BUILD 文件,告诉 Bazel 要构建的内容以及如何构建 构建容器。

    如需编写 BUILD 文件,请使用以下代码声明构建目标: Starlark,一种网域特有的语言。(查看示例 此处)。

    构建目标指定了 Bazel 将构建的一组输入工件及其依赖项、Bazel 将用于构建它的构建规则,以及用于配置构建规则的选项。

    build 规则用于指定 Bazel 将使用的 build 工具(例如编译器和链接器)及其配置。Bazel 附带了许多构建规则,涵盖支持的平台上支持的语言中最常见的工件类型。

  4. 通过命令行运行 Bazel。Bazel 会将输出放置在工作区中。

除了构建之外,您还可以使用 Bazel 运行测试查询 build,以跟踪代码中的依赖项。

Bazel 构建流程

在运行构建或测试时,Bazel 会执行以下操作:

  1. 加载与目标相关的 BUILD 文件。

  2. 分析输入及其依赖项,应用指定的构建规则,并生成操作图。

  3. 对输入执行构建操作,直到生成最终的构建输出。

由于之前的所有构建工作都已缓存,因此 Bazel 可以识别和重复使用已缓存的 并且仅重新构建或重新测试更改的内容。为了进一步强制执行 你可以设置 Bazel 来运行构建和测试 封闭沙盒,最大限度地减少偏差 并最大限度地提高可重现性

操作图

这个操作图显示了构建工件、它们之间的关系 以及 Bazel 将要执行的构建操作有了这个图表,Bazel track 是 文件内容以及对操作(例如 build 或 test 命令)的更改,以及 了解之前已经完成的构建工作。借助该图表,您还可以轻松跟踪代码中的依赖项

入门教程

如需开始使用 Bazel,请参阅开始使用或直接跳转到 Bazel 教程: