Protocol Buffer - 引入其他文件编译

Protocol Buffer - 引入其他文件编译

目录结构

demo/
├── my
│   └── a.proto
└── other
    └── b.proto

目的

在 b.proto 中引入 a.proto 定义 的 Message

a.proto内容

syntax = "proto3";
//go_package go 文件输出目录
option go_package="./my"; 

service HelloServiceDef{
  rpc sayHello(HelloRequest) returns(HelloResponse){}
}

message HelloRequest{
  string name = 1;
}

message HelloResponse{
  string message = 1;
}

b.protocol 文件内容

syntax = "proto3";
option go_package="./other";  // proto3 语法 需要带 ./

import  "my/a.proto";

message Other{
  //HelloRequest 来自 my/a.proto 的定义
  HelloRequest request = 1;
}

编译

# 进入 demo 目录
[root@blue proto]# cd demo/
[root@blue demo]# protoc -I .  --go_out=./ ./other/b.proto 
[root@blue demo]# tree
.
├── my
│   └── a.proto
└── other
    ├── b.pb.go  # 编译成功!!
    └── b.proto

语法:

  • -I / --proto_path: 指定了要去哪个目录中搜索import中导入的和要编译为.go的proto文件,可以加载多个
  • --go_out : 指定了生成的go文件的目录
  • ./other/b.proto: 需要编译的文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值