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 。
執(zhí)行上述命令,我們就 ./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 參數(shù),則在當前目錄進行搜索。
上面兩種方法產生的目錄如下圖, –I 參數(shù)起作用了后,生成目錄少了一級:

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容