Bazel概述

什么是Bazel?

Bazel是类似于Make,Maven和Gradle的开源构建和测试工具。它使用人类可读的高级构建语言。 Bazel支持多种语言的项目,并为多种平台构建输出。 Bazel支持跨多个存储库的大型代码库以及大量用户。

为什么要使用Bazel?

Bazel具有以下优点:

  • 高级构建语言。 Bazel使用一种抽象的,人类可读的语言以较高的语义级别描述了项目的构建属性。与其他工具不同,Bazel在库,二进制文件,脚本和数据集的概念上进行操作,从而使您免于编写对诸如编译器和链接器之类的工具的单独调用所带来的复杂性。
  • Bazel是快速和可靠的。 Bazel缓存所有以前完成的工作,并跟踪对文件内容和构建命令的更改。这样,Bazel知道何时需要重建某些内容,并且仅重建该内容。为了进一步加快构建速度,您可以将项目设置为以高度并行和增量方式构建。
  • Bazel是多平台的。 Bazel在Linux,macOS和Windows上运行。 Bazel可以从同一项目为多个平台(包括台式机,服务器和移动平台)构建二进制文件和可部署的程序包。
  • Bazel scales。 Bazel在处理包含10万多个源文件的构建时可保持敏捷性。它可以与数以万计的多个存储库和用户群一起使用。
  • Bazel是可扩展的。支持多种语言,您可以扩展Bazel以支持任何其他语言或框架。

如何使用Bazel?

要使用Bazel构建或测试项目,通常需要执行以下操作:

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

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

  3. 编写一个BUILD文件,告诉Bazel要构建什么以及如何构建它。

    您通过使用特定领域的语言Starlark声明构建目标来编写BUILD文件。(请参见此处的示例。)

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

    构建规则指定Bazel将使用的构建工具,例如编译器和链接器,以及它们的配置。Bazel提供了许多构建规则,涵盖了支持平台上支持的语言中最常见的工件类型。

  4. 命令行运行Bazel。 Bazel将您的输出放置在工作空间中。

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

Bazel如何工作?

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

  1. 加载与目标有关的BUILD文件。
  2. 分析输入及其依赖项,应用指定的构建规则,并生成action图。
  3. 对输入执行构建操作,直到生成最终的构建输出。

因为所有以前的构建工作都是缓存的,Bazel可以识别和重用缓存的工件,并且只重建或重新测试更改的内容。为了进一步加强正确性,您可以设置Bazel来通过沙箱严密地运行构建和测试,从而最大限度地减少偏差并最大限度地提高再现性

什么是action图?

action图表示构建构件、它们之间的关系以及Bazel将执行的构建操作。借助此图,Bazel可以跟踪文件内容的更改以及操作的更改,例如构建或测试命令,并知道以前已经完成了哪些构建工作。该图还使您能够轻松地跟踪代码中的依赖关系

我该如何开始?

要开始使用Bazel,请参阅入门或直接跳到Bazel教程:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值