开发学院,分享开发教程和最新动态
章节列表 什么是ProtobufProtobuf3 定义数据类型Protobuf3 标量值类型Protobuf3 缺省值Protobuf3 枚举Protobuf3 使用其他消息类型Protobuf3 嵌套类型Protobuf3 更新消息类型Protobuf3 未知字段Protobuf3 Any类型Protobuf3 OneofProtobuf3 MapsProtobuf3 包Protobuf3 定义服务Protobuf3 JSON映射Protobuf3 可选项Protobuf3 生成属于自己的类Protobuf 风格指南Protobuf 编码(1)Protobuf 编码(2)Protobuf 编码(3)Protobuf 技术Protocol Buffer C++实例教程: 为什么使用Protocol Buffer?Protocol Buffer C++实例教程: 定义协议格式Protocol Buffer C++实例教程: 编译Protocol BufferProtocol Buffer C++实例教程: Protocol Buffer APIProtocol Buffer C++实例教程: 发送消息Protocol Buffer C++实例教程: 读取消息Protocol Buffer C++实例教程: 扩展Protocol BufferProtocol Buffer C++实例教程: 优化技巧和高级用法Protocol Buffer C#实例教程: 前言Protocol Buffer C#实例教程:定义协议格式Protocol Buffer C#实例教程:编译Protocol Buffer Protocol Buffer C#实例教程:解析和序列化Protocol Buffer Go实例教程:前言Protocol Buffer Go实例教程:定义协议格式Protocol Buffer Go实例教程:编译Protocol BufferProtocol Buffer Go实例教程:读写消息Protocol Buffer JAVA实例教程:前言Protocol Buffer JAVA实例教程:定义协议格式Protocol Buffer JAVA实例教程:编译Protocol BufferProtocol Buffer JAVA实例教程:Protocol Buffer APIProtocol Buffer JAVA实例教程:写消息Protocol Buffer JAVA实例教程:读消息Protocol Buffer JAVA实例教程:扩展Protocol BufferProtocol Buffer Python实例教程:前言Protocol Buffer Python实例教程:定义消息格式Protocol Buffer Python实例教程:编译Protocol BufferProtocol Buffer Python实例教程:Protocol Buffer APIProtocol Buffer Python实例教程:写消息Protocol Buffer Python实例教程:读取MessageProtocol Buffer Python实例教程:扩展Protocol Buffer

Protobuf3 生成属于自己的类

Protobuf3 生成属于自己的类

  若要生成Java、Python、C++、Go、Ruby、Objective-C或C代码,需要使用.proto文件中定义的消息类型,则需要在.proto上运行协议缓冲编译器protoc。如果尚未安装编译器,请下载该软件包并按照自述文件中的说明进行操作。对于Go,您还需要为编译器安装一个特殊的代码生成器插件:您可以在GitHub上的golang/protobuf 存储库中找到这个插件和安装说明。

  协议编译器的调用如下:

  IMPORT_PATH指定在解析导入指令时查找.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格式的归档文件。JAVA JAR规范要求JAR输出也将得到清单文件。注意,如果输出归档文件已经存在,则它将被覆盖;编译器不够智能,无法将文件添加到现有归档文件中。

  你必须提供一个或多个.proto文件作为输入,可以同时指定多个.proto文件。虽然文件是相对于当前目录命名的,但是每个文件必须驻留在其中一个IMPORT_PATH中,以便编译器可以确定其规范名称。