我正在尝试使用以下文件夹结构将父定义的proto defn导入子原型。
|
|--parent.proto
|
|--sub
|--child.proto
parent.proto
message Attribute {
---
}
child.proto
import "parent.proto"
message Child {
int32 attributeNo = 1;
com.model.Attribute attribute = 2;
}
当前,它给我一个错误,提示它找不到parent.proto。 请提出建议。
答案 0 :(得分:0)
protoc
在使用-I
标志指定的目录中查找其导入。例如,您可以将-I/home/user/my_awesome_proto_lib
添加到protoc
命令行参数中,编译器将在此处查找您的导入。
在协议的帮助页面中,有关--proto_path
的信息:
-IPATH, --proto_path=PATH Specify the directory in which to search for
imports. May be specified multiple times;
directories will be searched in order. If not
given, the current working directory is used.
因此,当前,当您运行protoc
时,它将在parent.proto
目录中查找sub
。这显然不是您所需要的。您可以将导入更改为import "../parent.proto"
,这将返回到根级别并从那里获取parent.proto
。但是protobuf中通常鼓励使用的样式是不使用相对导入。
相反,您可以考虑将原型项目的根添加为-I
/ --proto_path
标志。
另一个选择是从项目的根目录编译原始文件。您可以cd
到项目的根目录,然后从那里protoc
。