解決protobuf import路徑的問題

網上關於protobuf import的文章不太詳細,有些問題說的不全,好比import時的路徑是在哪一個目錄中搜索的,好比:spa

我有一個這樣的目錄結構,我怎麼在demo2/protoDemo2.proto文件中導入demo1/test.proto中的文件呢?code

如下是protoDemo2.proto中的代碼:blog

 1 syntax="proto3";  2 import "test.proto";  3 package protoDemo2;  4 
 5 enum Book {  6     UNKNOWN = 0;  7     STUDY = 1;  8     STORY = 2;  9     TECH = 3; 10     LAUGHT = 4; 11 } 12 
13 enum Food { 14     COOKIE = 0; 15     HUMBURGER = 1; 16     RICE = 2; 17     BREAD = 3; 18 } 19 
20 message Test2{ 21     test.ContactBook book = 1; 22 }

能夠看到我import時沒用路徑,只使用了test.proto。編譯器

在protoc中輸入:編譯

protoc --proto_path=./src/protobufDemo/demo1/ --proto_path=./src/protobufDemo/demo2 --go_out=./src/protobufDemo/demo2 protoDemo2.proto

執行protoc編譯器生成go文件:class

--proto_path: 指定了要去哪一個目錄中搜索import中導入的和要編譯爲.go的proto文件,能夠定義多個,我使用了兩個proto_path,第一個指定了import "test.proto"中test.proto文件的搜索目錄,第二個定義了要編譯的文件protoDemo2.proto文件的目錄。test

--go_out: 指定了生成的go文件的目錄,我在這裏把go文件放到了demo2這個目錄中。import

最後的protoDemo2.proto, 定義了我要編譯的文件是哪一個文件。搜索

最後生成的go文件:im

相關文章
相關標籤/搜索