protoc 是官方提供的编译器,用于将 .proto 文件,转换成各种语言的 protocol buffer 代码。
安装
1、下载编译器 protoc
/bin/protoc.exe
放到
${GOPATH}/bin
3、安装 protoc-gen-go 插件
go get -u github.com/golang/protobuf/protoc-gen-go
安装 protoc-gen-go-grpc 插件
cd Go_path\src\google.golang.org
git clone https://github.com/grpc/grpc-go
go install google.golang.org\grpc-go\cmd\protoc-gen-go-grpc
使用
Go Generated Codehttps://developers.google.com/protocol-buffers/docs/reference/go-generated#package
protoc.exe *.proto --go_out=./ # --go_out 生成 go 代码,不带 rpc
protoc.exe *.proto --go_grpc_out=./ # --go_grpc_out 生成 go 代码,带 rpc,注意 proto 中要定义过 service
- plugins=plugin1 + plugin2: 指定要加载的子插件列表
--go_opt=paths=source_relative
--go-grpc_opt=paths=source_relative
报错及解决方法
1、
protoc-gen-go: unable to determine Go import path for "xxx.proto"
Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.
根据提示,在 https://developers.google.com/protocol-buffers/docs/reference/go-generated#package 中要求加上 option:
option go_package = "example.com/project/protos/fizz";
2、
生成 grpc 代码报错:
'protoc-gen-go-grpc' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
--go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.
是因为需要再安装 protoc-gen-go-grpc 插件
cd Go_path\src\google.golang.org
git clone https://github.com/grpc/grpc-go
go install google.golang.org\grpc-go\cmd\protoc-gen-go-grpc