Bazel学习笔记之基本概念

1. Bazel 概述

在各种开发语言流行的今天,每个开发语言都对应了一个自己的构建工具。因此在各种语言切换进程开发时构建工具的学习也是件麻烦的事情,当然很多高级语言开发都有现成的IDE(集成了构建工具),这样使得我们减少了学习成本,但是有时候难免有需求要修改或了解构建工具更深层此的原理。这个时候岂不是要学很多构建不同种类的构建工具知识!这个时候Bazel就登场了,请诸君细细看来。
Bazel说到底是一个构建和测试工具还是开源的(厉害不哈哈哈),但是它去支持多种语言的构建C++、JAVA、Android及iOS并支持跨平台构建。

2. Bazel的优势

  • 高级构建语言: Bazel使用抽象的、人类可读的语言在高语义级别描述项目的构建属性。 与其他工具不同,Bazel 对库、二进制文件、脚本和数据集的概念进行操作,免于编写对编译器和链接器等工具单独调用的复杂性。
  • Bazel快速可靠: Bazel会对以及进程过的工作进行缓存并跟踪文件内容和构建命令的更改。 通过这种方式,Bazel知道什么时候需要重建什么东西,并且只重建那个。
  • Bazel支持多平台: Bazel可以在 Linux、macOS 和 Windows 上运行。 Bazel也可以从同一个项目为多个平台(包括桌面、服务器和移动设备)构建二进制文件和可部署包
  • Bazel scales: 不知到如何翻译scales。Bazel在处理超数十万个源文件构建时仍然高效。 它适用于数以万计的多个存储库和用户群。
  • Bazel 可扩展: 支持多种语言,可以扩展 Bazel 以支持任何其他语言或框架

3. 应该如何使用Bazel

  • 毋庸置疑的第一步安装
  • 设置项目工作区(workspace),这是Bazel查找构建输入和BUILD文件以及存储构建输出的目录
  • 编写一个BUILD文件
  • 运行 Bazel(从命令行中),构建内容默认被输出到workspace中

4. Bazel执行流程

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

  • 加载与目标相关的 BUILD 文件
  • 分析输入及其依赖关系,应用指定的构建规则,并生成一个动作图
  • 对输入执行构建操作,直到生成最终构建输出

4.1 动作图

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

5. Bazel 中的核心概念

5.1 Workspace

一个构建工程中包含一个WORKSPACE文件用于标识Bazel的工作区

5.2 Package

workspace中的包含BUILD文件的目录是一个包

接下来会基于C++项目的构建学习Bazel
参考:
https://docs.bazel.build/versions/4.2.1/bazel-overview.html


欢迎大家关注「CoderPro」公众号,请大家多多支持、多多关照/(ㄒoㄒ)/~~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值