要生成Java、Python、C++、Go、Ruby、ObjuleC或C代碼,須要使用.proto
文件中定義的消息類型,還須要在.proto
上運行協議緩衝區編譯器protoc
。若是還沒有安裝編譯器,請下載該軟件包並按照自述文件中的說明進行操做。對於Go,您還須要爲編譯器安裝一個特殊的代碼生成器插件:您能夠在GitHub上的golang/protobuf存儲庫中找到這個插件和安裝說明。
協議編譯器的調用方式以下:php
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 --objc_out=DST_DIR --csharp_out=DST_DIR path/to/file.proto
IMPORT_PATH:指定解析import
指令時要在其中查找.proto
文件的目錄。若是省略,則使用當前目錄。經過屢次傳遞-proto_path
選項能夠指定多個導入目錄;它們將按順序進行搜索。-I=_IMPORT_PATH_
能夠用做--proto_PATH
的縮寫形式。html
能夠提供一個或多個輸出指令:java
——cpp_out
在DST_DIR
中生成C++代碼。更多信息請參見C++生成代碼參考。——java_out
在DST_DIR
中生成Java代碼。有關更多信息,請參閱Java生成代碼參考。——python_out
在DST_DIR
中生成Python代碼。更多信息請參見Python生成代碼參考。——go_out
在DST_DIR
中生成Go代碼。更多信息請參見Go生成代碼參考。——ruby_out
在DST_DIR
中生成Ruby代碼。更多信息請參見Ruby生成代碼參考。——objc_out
在DST_DIR
中生成Objective-C代碼。更多信息請參見Objective-C生成代碼參考。——csharp_out
在DST_DIR
中生成c#代碼。更多信息請參見C#生成代碼參考。——php_out
在DST_DIR
中生成PHP代碼。有關更多信息,請參閱PHP生成代碼參考。爲了方便起見,若是DST_DIR
以.zip
或.jar
結尾,編譯器會將輸出寫入一個給定名稱的zip格式存檔文件。注意,若是輸出存檔已經存在,它將被覆蓋;編譯器不夠智能,沒法向現有存檔添加文件。必須提供一個或多個.proto
文件做爲輸入。能夠一次指定多個.proto
文件。儘管這些文件是相對於當前目錄命名的,但每一個文件都必須駐留在IMPORT_PATH
導入的其中一個路徑中,以便編譯器能夠肯定其規範名稱。python
結語:至此,【Language Guide (proto3) | proto3 語言指南】系列隨筆所有完成。若是您對系列文章有任何疑問或者意見,歡迎留言討論!很是但願本系列隨筆能爲您提供一些幫助。git