固定链接 使用 Bazel 构建 Golang 项目

使用 Bazel 构建 Golang 项目

使用 Bazel 构建 Golang 项目

Bazel 是 Google 开源的一个编译工具,Bazel 使用分布式缓存和增量构建方法,使得编译更加快速。Bazel 原生支持 Java 和 C++ 语言,目前也开源了编译 Golang 项目的相关 rules。

下面介绍一下使用 Bazel 编译 Golang 项目的方法。

创建配置文件

首先,要在当前 project 的根目录下创建 WORKSPACEBUILD.bazel 文件。其中 WORKSPACE 文件用于设置加载 Bazel 环境(包括rules)和相关依赖。

示例代码的 WORKSPACE 配置如下:

然后,配置 BUILD.bazel 文件:

注意:第二个注释里 prefix 后的字符串是有意义的,表示要编译的 project 的名称。

然后使用下面的命令会生成 Bazel 编译项目所需的配置文件:

生成的配置文件如下:

这里面,go_library 表示编译需要链接的源码和库文件的信息,go_binary 表示编译生成的二进制文件信息,里面的 name 就表示生成的二进制文件的名称。

编译

构建根目录下所有的 target:

注意 Bazel 使用 // 来表示当前 project 的根目录, ... 表示当前路径下所有的包,如果要编译特定路径下的包,使用:

运行程序:

编译后生成的二进制文件在 bazel-bin/darwin_amd64_stripped 路径下,运行:

类似的,也可以使用 bazel test 运行测试程序。

本文作者:黄会栢

参考:

您的留言将激励我们越做越好