go - 是否可以使用 Bazel 构建 Go 库而不是二进制文件?
问题描述
我有一个实现 GRPC API 的应用程序。Bazel 使用存储库中的 .proto 文件生成 Go 代码,然后构建一个二进制文件。
我的问题:是否可以配置一个新目标,以便 Bazel 生成(除了二进制文件之外)其他应用程序可以使用的 Go 库?
我知道 Bazel 将生成的代码存储在其沙箱的深处,但是我希望有一种更可靠的方式,因为路径可能会在未来的 Bazel 版本中发生变化。
UPD:如果 Bazel 无法实现,请提供有关如何使用不同工具实现相同目标的任何提示。
解决方案
您可以使用go_proto_library
就像是
go_proto_library(
name = "date_go_proto",
importpath = "google.golang.org/genproto/googleapis/type/date",
protos = [":date_proto"],
)
这个例子来自这个文件
但是,如果您正在寻找生成源文件而不是二进制编译库的东西,请查看rules_go#512中的票证,这个功能正在开展工作。
推荐阅读
- typescript - 使用普通的旧 Typescript 类实现存储库模式
- google-sheets - 在谷歌表格中使用下拉列表时,如何根据选择的下拉项目从不同的表格中提取图形?
- sql-server - SQL Server SPID 卡在可运行状态,没有任何阻塞
- git - 如何对 git 提交进行分类?
- c# - 当查询结果为“null”时,它会引发错误
- r - 向列添加小数位
- javascript - 在 http 代理中替换请求包
- c++ - 尝试运行一个简单的程序来测试模板函数,但总是导致找不到函数匹配错误
- javascript - 尝试返回布尔值而不是接收未定义
- python - 连接的数据框不按列对齐