github:https://github.com/smallnest/rpcx
目的:使用protoc生成rpcx插件对应的pb.go文件
安装步骤:
下载protoc编译器protobuf,负责将proto文件编译成不同编程语言的代码,Google提供了go和grpc的protoc
插件,但是依照官方的解释,不准备将其做成库的方式,所以我们要实现自己的插件,切换到v1.3.5
分支。 v1.4.0
以上的分支是基于protobuf APIV2实现的,目前还在开发之中,所以我们还是采用常用的稳定的版本
# 下protobuf
go get github.com/golang/protobuf/{proto,protoc-gen-go}
export GIT_TAG="v1.3.5"
# 版本切换
git -C $GOPATH/src/github.com/golang/protobuf checkout $GIT_TAG
下载rpcx插件,然后把本项目下的link_rpcx.go
文件和rpcx
文件夹复制到protoc-gen-go
文件夹下
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go && cp -r $GOPATH/src/github.com/rpcxio/protoc-gen-rpcx/{link_rpcx.go, rpcx} .
变异protoc-gen-go插件,安装在GOPATH下,这个插件除了将proto文件编译成protobuf的go文件,还包含grpc和rpcx插件
# 设置环境变量
export GOPATH="$(go env GOPATH)"
# 编译插件
go install github.com/golang/protobuf/protoc-gen-go
# 添加path
export PATH=$PATH:$GOPATH/bin
编译命令
protoc *.proto --proto_path=. --go_out=plugins=rpcx:.
# 执行proto时报错
protoc-gen-go: error:bad Go source code was generated: 7:1: expected 'IDENT', found 'import'
# 解决方法,添加option选项
option go_package = "要输出的位置";