protoc 命令的獲得
源碼在 https://github.com/google/protobuf 鸣个, 如果不想自己編譯獲得最新版本,則可以下載官方編譯好的各個(gè)平臺(tái)的布朦,下載地址:https://github.com/google/protobuf/releases 囤萤,注意不是帶語言后綴的文件,那是源碼是趴,如下圖:
下載后的解壓縮包含的內(nèi)容如下(以mac下為例)
我們通過 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 掸驱。
執(zhí)行上述命令,我們就 ./java/ 目錄下就產(chǎn)生了對(duì)應(yīng)的 java文件没佑。
go 文件生成
下面這幾種方式生成都可以:
$ protoc --go_out=./go/ ./proto/helloworld.proto
跟上面Java的生成完全一樣毕贼,只不過這次是讓生成 go 的代碼。
$ protoc --go_out=./go/ -I proto ./proto/helloworld.proto
簡單來說图筹,就是如果多個(gè)proto文件之間有互相依賴帅刀,生成某個(gè)proto文件時(shí),需要import其他幾個(gè)proto文件远剩,這時(shí)候就要用-I來指定搜索目錄扣溺。
如果沒有指定 –I 參數(shù),則在當(dāng)前目錄進(jìn)行搜索瓜晤。
上面兩種方法產(chǎn)生的目錄如下圖锥余, –I 參數(shù)起作用了后,生成目錄少了一級(jí):
javanano 文件生成
$ protoc --javanano_out=ignore_services=true:./javanano/ -I proto ./proto/garlic.proto
由于 javanano 是給 android 用的痢掠,沒有服務(wù)器端代碼驱犹,所以多了--javanano_out=ignore_services=true:DST_DIR 這個(gè)設(shè)置,其他完全一樣足画。
參考: 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