我在$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
并执行以下命令:
协议--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
。能做到吗?
答案 0 :(得分:0)
非常希望a.pb.go像这样导入b:import 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;
}