protobuf C ++编译器的bazel规则

Morxa

我正在使用Bazel和Google的协议缓冲区。我想添加一个Bazel规则,以便可以从.proto文件生成C ++ API 在GNU make中,我会做(简化示例):

%.h: %.cc
%.cc: %.proto
    protoc --cpp_out=. $<

如何mymessage.proto使用Bazel完成相同的操作(即,每当更改时生成API )?

用户名

cc_proto_library最近对Bazel的原生支持是http : //bazel.build/blog/2017/02/27/protocol-buffers.html

tl; dr,WORKSPACE一次设置文件后,

cc_proto_library(
    name = "person_cc_proto",
    deps = [":person_proto"],
)

proto_library(
    name = "person_proto",
    srcs = ["person.proto"],
    deps = [":address_proto"],
)

...

然后,

$ bazel build :person_cc_proto

https://github.com/cgrushko/proto_library中有一个示例

要点是,您定义了一个proto_library.proto文件以“导入”到Bazel中,并将cc_proto_library其编译为C ++。默认情况下,协议缓冲区编译器和运行时分别来自@com_google_protobuf//:protoc@com_google_protobuf_cc//:cc_toolchain

进行这种分离的原因是使大型原型图能够被编译成多种语言。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章