要生成Java、Python、C++、Go、Ruby、ObjuleC或C代码,须要使用.proto
文件中定义的消息类型,还须要在.proto
上运行协议缓冲区编译器protoc
。若是还没有安装编译器,请下载该软件包并按照自述文件中的说明进行操做。对于Go,您还须要为编译器安装一个特殊的代码生成器插件:您能够在GitHub上的golang/protobuf存储库中找到这个插件和安装说明。
协议编译器的调用方式以下:php
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
的缩写形式。html
能够提供一个或多个输出指令:java
——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
导入的其中一个路径中,以便编译器能够肯定其规范名称。python
结语:至此,【Language Guide (proto3) | proto3 语言指南】系列随笔所有完成。若是您对系列文章有任何疑问或者意见,欢迎留言讨论!很是但愿本系列随笔能为您提供一些帮助。git