我正在使用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] 删除。
我来说两句