Language Guide (proto3) | proto3 语言指南(十五)生成类
Generating Your Classes - 生成类
要生成Java、Python、C++、Go、Ruby、ObjuleC或C代码,需要使用.proto
文件中定义的消息类型,还需要在.proto
上运行协议缓冲区编译器protoc
。如果尚未安装编译器,请下载该软件包并按照自述文件中的说明进行操作。对于Go,您还需要为编译器安装一个特殊的代码生成器插件:您可以在GitHub上的golang/protobuf存储库中找到这个插件和安装说明。
协议编译器的调用方式如下:
protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR --go_out=DST_DIR --ruby_out=DST_DIR --objc_out=DST_DIR --csharp_out=DST_DIR path/to/file.proto
-
IMPORT_PATH:指定解析
import
指令时要在其中查找.proto
文件的目录。如果省略,则使用当前目录。通过多次传递-proto_path
选项可以指定多个导入目录;它们将按顺序进行搜索。-I=_IMPORT_PATH_
可以用作--proto_PATH
的缩写形式。 -
可以提供一个或多个输出指令:
——cpp_out
在DST_DIR
中生成C++代码。更多信息请参见C++生成代码参考。——java_out
在DST_DIR
中生成Java代码。有关更多信息,请参阅Java生成代码参考。——python_out
在DST_DIR
中生成Python代码。更多信息请参见Python生成代码参考。——go_out
在DST_DIR
中生成Go代码。更多信息请参见Go生成代码参考。——ruby_out
在DST_DIR
中生成Ruby代码。更多信息请参见Ruby生成代码参考。——objc_out
在DST_DIR
中生成Objective-C代码。更多信息请参见Objective-C生成代码参考。——csharp_out
在DST_DIR
中生成c#代码。更多信息请参见C#生成代码参考。——php_out
在DST_DIR
中生成PHP代码。有关更多信息,请参阅PHP生成代码参考。为了方便起见,如果DST_DIR
以.zip
或.jar
结尾,编译器会将输出写入一个给定名称的zip格式存档文件。注意,如果输出存档已经存在,它将被覆盖;编译器不够智能,无法向现有存档添加文件。
-
必须提供一个或多个
.proto
文件作为输入。可以一次指定多个.proto
文件。尽管这些文件是相对于当前目录命名的,但每个文件都必须驻留在IMPORT_PATH
导入的其中一个路径中,以便编译器可以确定其规范名称。
结语:至此,【Language Guide (proto3) | proto3 语言指南】系列随笔全部完成。如果您对系列文章有任何疑问或者意见,欢迎留言讨论!非常希望本系列随笔能为您提供一些帮助。