写点什么

Google 开源构建工具 Bazel

  • 2015-03-27
  • 本文字数:917 字

    阅读完需:约 3 分钟

Google 日前开源了他们内部使用的构建工具 Bazel

Bazel 是一个类似于 Make 的工具,是 Google 为其内部软件开发的特点量身定制的工具,如今 Google 使用它来构建内部大多数的软件。它的功能有诸多亮点:

  • 多语言支持:目前 Bazel 默认支持 Java、Objective-C 和 C++,但可以被扩展到其他任何变成语言。
  • 高级构建描述语言:项目是使用一种叫 BUILD 的语言来描述的,它是一种简洁的文本语言,它把一个项目视为一个集合,这个集合由一些互相关联的库、二进制文件和测试用例组成。相反,像 Make 这样的工具,需要去描述每个文件如何调用编译器。
  • 多平台支持:同一套工具和相同的 BUILD 文件可以用来为不同的体系结构构建软件,甚至是不同的平台。在 Google,Bazel 被同时用在数据中心系统中的服务器应用和手机端的移动应用上。
  • 可重复性:在 BUILD 文件中,每个库、测试用例和二进制文件都需要明确指定它们的依赖关系。当一个源码文件被修改时,Bazel 凭这些依赖来判断哪些部分需要重新构建,以及哪些任务可以并行进行。这意味着所有构建都是增量的,并且相同构建总是产生一样的结果。
  • 可伸缩性:Bazel 可以处理大型项目;在 Google,一个服务器软件有十万行代码是很常见的,在什么都不改的前提下重新构建这样一个项目,大概只需要 200 毫秒。

对于为什么要重新发明一个构建工具而不直接使用 Make,Google 认为 Make 控制得太细,最终的结果完全依靠开发人员能正确编写规则。很久以前,Google 使用自动生成的臃肿的 Makefile 来构建他们的软件,速度太慢,结果不可靠,最终影响了研发人员的效率和公司的敏捷性。所以他们做了 Bazel。Bazel 的规则层次更高,比如,对于“Java 测试”、“C++ 二进制文件”,它都有定义好的内建规则,而这些规则都已经被无数的测试证明是正确和稳定的。

另外,Bazel 也有扩展机制,通过这种机制,开发者可以自己添加其他各种语言的构建规则,比如 Python

Bazel 的代码目前已经托管在GitHub 上,感兴趣的读者也可以通过Bazel 的主页了解更多信息。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-27 00:5921919
用户头像

发布了 77 篇内容, 共 39.4 次阅读, 收获喜欢 26 次。

关注

评论

发布
暂无评论
发现更多内容

加速 AI 推理,焱融全闪存储成就 KVCache 以存换算关键一跃

焱融科技

人工智能 AI推理 KVCache

MCP Server On FC 之旅第 4 站:长连接闲置计费最高降低 87% 成本的技术内幕

阿里巴巴云原生

阿里云 云原生 函数计算

IDC报告:忆联狂揽中国企业级SSD市场三连冠,自有品牌出货量同比激增117%

财见

制造与物流企业拥抱AI技术,提升条码读取性能

财见

那些被历史抛弃的汽车

脑洞汽车

AI

放弃「人盯人」,把控项目又有怎样的解题思路?

禅道项目管理

项目管理 甘特图 项目管理软件 禅道 甘特图软件

Axure RP 11中文授权码 附安装教程

Rose

干货 | 异构数据库日志怎么解析才不踩坑?

tapdata

异构数据库日志解析 日志结构化处理 TapData日志采集, 数据变更捕获CDC

平衡的艺术——精确财务规划与敏捷业务管理

智达方通

财务分析 财务规划

MyEMS开源能源管理系统 + EG200 4G网关

开源能源管理系统

开源 能源管理

MyEMS能耗数据上报省市重点用能单位能耗在线监测系统平台

开源能源管理系统

开源 能源管理

开源能源管理系统在安全自主可控方面的重要性

开源能源管理系统

开源 能源管理

高交会顶流活动抢先看:人工智能、低空经济、智慧城市谁更出圈

AIOTE智博会

高交会 人工智能展 深圳高交会

2025年碳材料展|2025第九届上海国际碳材料大会

秋硕展览

2025河南新零售展|2025郑州国际自有品牌展会

秋硕展览

NocoBase v1.7.0 正式版发布

NocoBase

开源 低代码 零代码 插件 版本更新

焱融科技与英迈中国达成战略合作 共筑 AI 算力存储新生态

焱融科技

告别传统管理!MES系统如何赋能印刷企业数字化升级?

万界星空科技

数字化转型 制造业 mes 印刷行业 万界星空科技

RS485总线是否必须加120Ω终端电阻

开源能源管理系统

开源 能源管理

金融新纪元:AI正在重塑金融服务业的未来

新消费日报

从云原生到小程序生态:容器技术驱动的应用开发变革

xuyinyin

Illustrator 2024 for Mac(AI2024领先的矢量图形软件)v28.1中文激活版

Rose

烟草行业监管新利器:中烟创新案卷评审评查系统提速监管效能

中烟创新

开启报名|Nacos3.0 开源开发者沙龙 Agent&MCP 专场

阿里巴巴云原生

阿里云 开源 云原生 nacos

让通义千问3帮忙算笔账:中小研发团队用云消息队列比自建开源省多少?

阿里巴巴云原生

阿里云 云原生 云消息队列

汽车人,变形出发?

脑洞汽车

AI

不懂 PromQL?AI 智能体帮你玩转大规模指标数据分析

阿里巴巴云原生

阿里云 云原生 Prometheus 可观测

去面试AI大模型,会问到哪些问题?

王中阳Go

AI

得物自研DScript2.0脚本能力从0到1演进

得物技术

还不懂什么是“进销存”吗?一文带你读懂!

积木链小链

数字化转型 智能制造 生产管理 进销存管理

Grafana与MyEMS的比较分析

开源能源管理系统

开源 能源管理

Google开源构建工具Bazel_语言 & 开发_曹知渊_InfoQ精选文章