我在$GOPATH/src/github.com/cs/p/a/a.proto
中有一个pb文件,在$GOPATH/src/github.com/cs/p/b/b.proto
中有一个pb文件。a.proto
像这样导入b.proto
:
import "b/b.proto"
现在我输入 $GOPATH/src/github.com/cs/p
并执行以下命令:
protoc --go_out=plugins=grpc:. a/a.proto
然后我发现a.pb.go
是在$GOPATH/src/github.com/cs/p/a/
中生成的,其中有这样的语句:import "b"
。
当我构建项目时,它说它找不到包b
。我该怎么办?从字面上看,我希望a.pb.go
这样的导入b
:import github.com/cs/p/b
.能做到吗?
从字面上看,我希望a.pb.go像这样导入b:导入 github.com/cs/p/b。 能做到吗?
是的!
您需要在protoc
编译步骤中包含导入路径。因此,假设您的 git 源位于路径 $GOPATH/src
下,您将添加包含标志"-I.:$GOPATH/src"
如下所示:
protoc --go_out=plugins=grpc:. "-I.:$GOPATH/src" a/a.proto
导入后,要引用任何消息类型,请使用作用域路径<package name>.<message name>
。
例如,(git 托管(定义:
// this file resides here: ${GOPATH}/src/github.com/bib/pb/person.proto
package tutorial;
message Person {
string name = 1;
}
将像这样导入和引用:
import "github.com/bib/pb/person.proto"
message AddressBook {
repeated tutorial.Person people = 1;
}