使用 home brew:

brew tap grpc/grpc
brew install grpc

brew tap 的意思:

brew tap makes a shallow clone of the repository at https://github.com/user/repo. After that, brew will be able to work on those formulae as if they were in Homebrew’s canonical repository. You can install and uninstall them with brew [un]install, and the formulae are automatically updated when you run brew update. (See below for details about how brew tap handles the names of repositories.)

brew tap 文档

安装结果:

/usr/local/bin:
protoc

/usr/local/Cellar/grpc/1.7.2_1/bin:
grpc_cli                grpc_node_plugin        grpc_python_plugin
grpc_cpp_plugin         grpc_objective_c_plugin grpc_ruby_plugin
grpc_csharp_plugin      grpc_php_plugin

这种安装方式会安装gRPc C/C++库和其它支持语言的proto插件和protobuf编译器。如果用不到这些语言,可以只安装protobuf就好了,参考项目:protobuf。java和go支持有独立项目grpc-javagrpc-go

Golang protobuf插件

项目地址:golang/protobuf

安装:

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

编译后会安装protoc-gen-go到$GOBIN目录, 默认在 $GOPATH/bin. 该目录必须在系统的环境变量$PATH中,这样在编译.proto文件时protocol编译器才能找到插件。



$ export PATH=$PATH:$GOPATH/bin

grpc-go

go get -u google.golang.org/grpc

做类库使用

编译器使用

使用protoc命令编译.proto文件,不同语言支持需要指定输出参数,如:

protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR --go_out=DST_DIR --ruby_out=DST_DIR --javanano_out=DST_DIR --objc_out=DST_DIR --csharp_out=DST_DIR path/to/file.proto

这里详细介绍golang的编译姿势:

  • -I 参数:指定import路径,可以指定多个-I参数,编译时按顺序查找,不指定时默认查找当前目录
  • –go_out :golang编译支持,支持以下参数

    • plugins=plugin1+plugin2 - 指定插件,目前只支持grpc,即:plugins=grpc

    • 末尾 :编译文件路径 .proto文件路径(支持通配符)

完整示例:

protoc --go_out=plugins=grpc:. reservation/reservation.proto