简介
bazel是google开源的构建系统,支持多种语言、支持云端构建等功能。
bazel与cmake、autoconf不太一样,bazel进行构建时会启动一个服务,然后bazel命令与这个服务进行交互发送指令,这个服务实际进行编译任务。同时bazel提供了一套远程构建、缓存的接口,实现这套接口就可以制定自己的远程构建系统了。
环境搭建
bazel构建工具依赖java和python,bazel启动的构建服务是java开发的,bazel使用的构建配置是基于python写的,因此这两个组件并不可少。
bazel安装可以参考bazel提供的安装教程
buildform是其中一种解决方案,buildform基于java编写,分为调度服务和工作服务,支持多分片部署,详细文档可以见buildform的wiki。buildform的readme里有两个服务的简单启动命令,在examples目录下有对应的服务配置,使用对应的配置即可启动。
上面的环境部署好了之后,添加bazel的配置,bazel配置分为用户级别和项目级别,文件名为.bazel。添加下面内容,并在构建时添加 –config=build 即可实现远程编译:
1 | # Remote Build Execution requires a strong hash function, such as SHA256. |
在mac上使用bazel构建linux产物的方法的讨论在: https://stackoverflow.com/questions/61567876/bazel-mixing-a-linux-remote-execution-platform-with-a-mac-os-local-platform 目前还没有实现。
bazel平台的概念可以参考文档Bazel自定义工具链。