0. Bazel是什么
Bazel是Google开源的,类似于Make、Maven或Gradle的构建和测试工具。它使用可读性强的、高层次的构建语言,支持多种编程语言,以及为多种平台进行交叉编译。简单来说就是用来自动化构建大型工程的,和make, maven之类的工具属于一类东西,他的目标是当项目里的一部分程序修改后,只需要几个命令就可以将整个项目进行重新编译,且要求快。它还可以进行自动化测试,当然这些都必须由你来编写测试流程和规则。因为我们项目用的c++,而且bazel对c++的支持很完善,所以我的整个系列都只针对c++来说。
1. Bazel 的优势
高层次的构建语言:更加简单,Bazel抽象出库、二进制、脚本、数据集等概念,不需要编写调用编译器或链接器的脚本
快而可靠:能够缓存所有已经完成的工作步骤,并且跟踪文件内容、构建命令的变动情况,避免重复构建。此外Bazel还支持高度并行构建、增量构建
多平台支持:可以在Linux/macOS/Windows上运行,可以构建在桌面/服务器/移动设备上运行的应用程序
可扩容性:处理10万以上源码文件时仍然能保持速度
可扩展性:支持Android、C/C++、Java、Objective-C、Protocol Buffer、Python…还支持扩展以支持其它语言
2. Bazel 的工作流程
1、加载和目标相关的 BUILD 文件;
2、分析输入及其依赖,应用指定的构建规则,产生一个Action图。这个图表示需要构建的目标、目标之间的关系,以及为了构建目标需要执行的动作。Bazel依据此图来跟踪文件变动,并确定哪些目标需要重新构建;
3、针对输入执行构建动作,直到最终的构建输出产生出来;
bazel中对于文件架构的概念有两个:workspace 和 package。
3. 如何使用
官网 : https://bazel.build/
1、安装 bazel
# 更新 source list
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
sudo apt update && sudo apt install bazel
sudo apt install g++ unzip zip
export PATH="$PATH:$HOME/bin"
2、创建工作空间
Bazel从此工作空间寻找构建输入和BUILD文件,同时也将构建输出存放在(指向)工作空间(的符号链接中)
3、编写BUILD文件
4、从命令行调用Bazel命令,构建、测试或者运行项目
参考
[1] https://fuhailin.github.io/Bazel-Starter/
[2] https://www.cnblogs.com/jojodru/p/7744630.html