在proto中从父文件夹导入到子文件夹

时间:2018-10-29 19:58:26

标签: import protocol-buffers proto

我正在尝试使用以下文件夹结构将父定义的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。 请提出建议。

1 个答案:

答案 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