跳到主要内容

protoc

flagfor
-I,--proto_path <PATH>默认当前目录, --descriptor_set_in
--encode <MESSAGE_TYPE>text -> proto
--deterministic_output--encode 确保 map 顺序固定
--decode <MESSAGE_TYPE>proto -> text
--decode_rawproto -> tag,value - 不需要 proto
--descriptor_set_in <FILES>FileDescriptorSet 列表 descriptor.proto
-o,--descriptor_set_out <FILE>FileDescriptorSet
--include_imports--descriptor_set_out 包含依赖
--include_source_info--descriptor_set_out 保留 SourceCodeInfo
--dependency_out=FILE输出 make 依赖
--error_format=FORMATgcc, msvs
--fatal_warningswarnings -> fatal
--print_free_field_numbers
--plugin=EXECUTABLE默认 PATH, 可以是 NAME=PATH
@<filename>从文件读取配置
  • 插件
    • <plugin>_out - 输出目录 - 例如 .:., .:./gen/out
    • <plugin>_opt - 参数
  • plugin
    • cpp
    • csharp
    • java
    • js
    • kotlin
    • objc
    • php
    • python
    • ruby
  • descriptor_set
    • 预生成 descriptor,之后则不需要 proto 源文件

Plugins

Descriptor

  • proto 解析过后的结构
  • DescriptorProto - Message
    • field FieldDescriptorProto
    • extension
    • nested_type - DescriptorProto
    • enum_type - EnumDescriptorProto
    • oneof - OneofDescriptorProto
    • options - MessageOptions

Write Plugins