当 proto 文件很大时,编译时间会太长(尤其是当我将头文件包含在另一个文件中时)。
几年前有人问过类似的问题,但没有回应:https://github.com/protocolbuffers/protobuf/issues/7340
有没有办法可以加快速度?
我们使用 Bazel,因此预编译标头不是一个选项。
protoc C++ 后端有一个记录不完善的选项
proto_h
,它会生成一个单独的文件,其中包含消息的前向声明。
可以这样调用:
protoc --cpp_out=proto_h=true:outputdir myproto.proto
除了正常输出
myproto.pb.h
和myproto.pb.cc
之外,您还会得到myproto.proto.h
。它包含了基本的消息类型,但是forward声明了一些内部类以避免过多的包含。
然后,您可以通过在标头中仅包含
myproto.proto.h
来减少编译时间,同时包含 C++ 源代码文件的完整 myproto.pb.h
。