文件不在使用proto_path指定的任何路径内

时间:2018-07-11 13:52:26

标签: go protocol-buffers

我正在测试从另一个目录导入.proto文件。

$ GOPATH / src / A / A.proto

syntax = "proto3"; 
package A;
 message SomeMsg {
     string  msg = 2;
     int64   id  = 3;
 }

$ GOPATH / src / B / B.proto

syntax = "proto3"; 
package B; import "A/A.proto";
 message Msg {
     SomeMsg s = 1;
 }

我正在这样做: 在文件夹A中:

protoc A.proto --go_out=.

,然后在文件夹B中:

protoc B.proto --go_out=. --proto_path=$GOPATH/

但是我会收到此错误:

  

B.proto:文件不位于使用--proto_path(或-I)指定的任何路径内。您必须指定包含此文件的--proto_path。请注意,proto_path必须是.proto文件名的确切前缀-protoc太笨拙,无法确定两个路径(例如绝对路径和相对路径)是否相等(这比您想象的要难)。

2 个答案:

答案 0 :(得分:3)

对我来说,错误似乎很清楚,这意味着您需要指定B.proto所在的确切目录

protoc B.proto --go_out=. --proto_path=$GOPATH/src/B 

,或者如果您已经在文件夹B中,

protoc B.proto --go_out=.

协议人很有趣比您想象的要难 !!!大声笑,我为什么要反对说“那是她的话!”的愿望。哈哈

答案 1 :(得分:0)

protoc B.proto --go_out=. --proto_path=$GOPATH/src/B --progo_path=. 为我工作。

--progo_path=. 也可以帮到你。