grpc使用时关于protobuf中引用其他文件时生成路径问题

记录下,当protobuf中引用其他文件时,经常因为路径不对无法生成成功的问题。

protobuf中引用其他pb文件

protobuf文件的引用是通过import关键字来的,需要写对路径,以下是我在golang中使用的sample

syntax = "proto3";

import "google/protobuf/empty.proto";   //google提供的,具体文件在GOPATH下
import "common/proto/common/common.proto";  //我自己定义,在同一个package下

service Captcha {
	rpc GenerateCaptcha(.google.protobuf.Empty) returns (CaptchaInfoResponse) {}
	rpc VerifyCaptcha(CaptchaInfo) returns (EmptyResponse) {}
}

生成时的路径设置

以下是我上面提供的sample文件的生成命令

protoc --proto_path=.:$GOPATH/src:../  --go_out=. --micro_out=. proto/captcha/captcha.proto

这里面的核心是proto_path,用来指定你引用的proto文件所在的目录,只有指定正确才能正常生成, proto_path(可以用I来替换)指定了三个目录,中间用:来分割(也可以分开,用三个proto_path来指定)

. #当前目录,用来指定需要生成的文件工作目录proto/captcha/captcha.proto
$GOPATH/src # google包所在的目录google/protobuf/empty.proto
../  # 相对路径,用来指定common.proto所在的目录

需要注意下,这里指定的目录是到protobuf文件中import路径的父路径(即这里的路径+pb中import的文件路径就是全路径)

我具体的代码目录,可以参考下

文件目录

问题

golang中通过go get安装的包都在$GOPATH的pkg下面,而且文件目录会在版本号,和protobuf文件中的路径不相符,我暂时不知道处理办法,是通过手动clone下来避过去的

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值