首页 > 解决方案 > 是否可以使用 Bazel 构建 Go 库而不是二进制文件?

问题描述

我有一个实现 GRPC API 的应用程序。Bazel 使用存储库中的 .proto 文件生成 Go 代码,然后构建一个二进制文件。

我的问题:是否可以配置一个新目标,以便 Bazel 生成(除了二进制文件之外)其他应用程序可以使用的 Go 库?

我知道 Bazel 将生成的代码存储在其沙箱的深处,但是我希望有一种更可靠的方式,因为路径可能会在未来的 Bazel 版本中发生变化。

UPD:如果 Bazel 无法实现,请提供有关如何使用不同工具实现相同目标的任何提示。

标签: goprotocol-buffersbazel

解决方案


您可以使用go_proto_library

就像是

go_proto_library(
    name = "date_go_proto",
    importpath = "google.golang.org/genproto/googleapis/type/date",
    protos = [":date_proto"],
)

这个例子来自这个文件

但是,如果您正在寻找生成源文件而不是二进制编译库的东西,请查看rules_go#512中的票证,这个功能正在开展工作。


推荐阅读