protobuf 命令
protoc 命令的获得
源码在 https://github.com/google/protobuf , 如果不想自己编译获得最新版本,则可以下载官方编译好的各个平台的,下载地址:https://github.com/google/protobuf/releases ,注意不是带语言后缀的文件,那是源码,如下图:
下载后的解压缩包含的内容如下(以mac下为例)
image
我们通过 which 命令可以查到 protoc 的安装目录, 覆盖它即可。
$ which protoc
/usr/local/bin/protoc
例子
Java 文件生成
$ protoc --java_out=./java/ ./proto/helloworld.proto
protoc 的命令格式为 protoc [OPTION] PROTO_FILES (最后是待编译的 proto文件)
--java_out 为输出java代码的目录,这里指定的是 ./java/ 目录。
随后我们指定了proto文件的位置 ./proto/helloworld.proto 。
执行上述命令,我们就 ./java/ 目录下就产生了对应的 java文件。
go 文件生成
下面这几种方式生成都可以:
$ protoc --go_out=./go/ ./proto/helloworld.proto
跟上面Java的生成完全一样,只不过这次是让生成 go 的代码。
$ protoc --go_out=./go/ -I proto ./proto/helloworld.proto
简单来说,就是如果多个proto文件之间有互相依赖,生成某个proto文件时,需要import其他几个proto文件,这时候就要用-I来指定搜索目录。
如果没有指定 –I 参数,则在当前目录进行搜索。
上面两种方法产生的目录如下图, –I 参数起作用了后,生成目录少了一级:
javanano 文件生成
$ protoc --javanano_out=ignore_services=true:./javanano/ -I proto ./proto/garlic.proto
由于 javanano 是给 android 用的,没有服务器端代码,所以多了--javanano_out=ignore_services=true:DST_DIR 这个设置,其他完全一样。
参考: https://github.com/grpc/grpc-common/issues/156
Language
Platform
Command
Node.js
Linux, Mac, Windows
npm install grpc
Python
Linux, Mac, Windows
pip install grpcio
Ruby
Linux, Mac, Windows
gem install grpc
PHP
Linux, Mac, Windows
pecl install grpc-beta
Go
Linux, Mac, Windows
go get google.golang.org/grpc
Objective-C
Mac
Runtime source fetched automatically from Github by Cocoapods
C#
Windows
Install gRPC NuGet package from your IDE (Visual Studio, Monodevelop, Xamarin Studio)
Java
Linux, Mac, Windows
Use our Maven and Gradle plugins that provide gRPC with statically linked boringssl
C++
Linux, Mac, Windows
Currently requires manual build and install
参考资料:
https://github.com/google/protobuf/tree/master/javanano
https://github.com/google/protobuf