为何选择 Bazel?

报告问题 查看来源 每晚 · 7.3。 · 7.2 条 · 7.1 · 7.0。 · 6.5

Bazel 具有快速正确可扩展的特点 带有集成测试的构建工具,可支持多种 语言代码库平台,打造行业领先的生态系统

Bazel 速度快

Bazel 非常清楚每个构建命令需要哪些输入文件, 只在这组输入文件包含 都会发生变化 它会尽可能以并行方式运行构建命令,无论是在 在同一台计算机上或在远程构建节点上运行。如果 build 的结构 可以同时运行数千个构建或测试命令。

内存、磁盘和 远程构建农场(如果有)。在 Google,我们经常会实现缓存命中率 位于 99%以内

Bazel 正确

Bazel 可确保您的二进制文件仅基于您自己的代码构建 源代码。Bazel 操作在各个沙盒和 Bazel 轨道中运行 每个 build 的输入文件,仅且始终重新运行 build 命令。这可以确保二进制文件保持最新状态, 相同的源代码始终会生成相同的二进制文件,

向无数的 make clean 调用和追逐幽灵 bug 打招呼 它们实际上已在从未构建的源代码中解决。

Bazel 可扩展

通过自行编写规则和宏来充分利用 Bazel 的强大功能 您可以根据自己在各类项目中的具体需求来自定义 Bazel。

Bazel 规则是用我们的 Starlark 编写的 是 Python 的子集。Starlark 是 让大部分开发者都能轻松编写规则 并在整个生态系统中使用

集成测试

Bazel 的集成测试运行程序 通过远程执行只知道并运行需要重新运行的测试 (如果有)并行运行这些任务。使用遥控器尽早检测薄片 快速运行测试数千次。

Bazel 提供了将测试结果上传到中央设备的工具 从而促进测试结果的高效沟通 或由个人开发者发布

多语言支持

Bazel 支持许多常见的编程语言,包括 C++、Java Kotlin、Python、Go 和 Rust。您可以构建多个二进制文件(例如, 后端、网页界面和移动应用)。 受限于一种语言的惯用构建工具。

多代码库支持

Bazel 可以从多个位置收集源代码:您可以 不需要提供依赖项(但您可以!),也可以指向 将 Bazel 复制到源代码或预构建工件(例如 git 代码库)的位置 代码库或 Maven Central),剩下的工作将由其自行处理。

多平台支持

Bazel 可以同时针对多个平台构建项目,这些平台包括 Linux、 macOS、Windows 和 Android。它还提供强大的 交叉编译功能为代码构建 同时在另一个平台上运行此 build。

庞大的生态系统

行业领导者喜欢使用 Bazel 构建 这是由使用 Bazel 和 Bazel 做出贡献的开发者组成的社区。查找工具、服务 和文档,包括咨询和 SaaS 产品 Bazel 可以使用的探索各种扩展程序,例如对编程语言的支持, 我们的开源软件代码库