【问题标题】:Importing from parent folder to child in proto在原型中从父文件夹导入到子文件夹
【发布时间】:2018-10-29 19:58:25
【问题描述】:

我正在尝试将 proto defn 从父 proto 导入具有以下文件夹结构的子 proto。

|
|--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。 请提出建议。

【问题讨论】:

    标签: import protocol-buffers proto


    【解决方案1】:

    protoc 在使用-I 标志指定的目录中查找其导入。例如,您可以将-I/home/user/my_awesome_proto_lib 添加到protoc 命令行参数,编译器会在那里查找您的导入。

    来自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 时,它会在 sub 目录中查找 parent.proto。这显然不是你所需要的。您可以将导入更改为import "../parent.proto",这将返回到根级别并从那里获取parent.proto。但 protobuf 中普遍鼓励的风格是不使用相对导入。

    相反,您可以考虑将原始项目的根添加为 -I/--proto_path 标志。

    另一种选择是从项目的根目录编译您的 proto 文件。您可以cd 到项目的根目录,然后从那里protoc

    【讨论】:

      猜你喜欢
      • 2017-06-07
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2019-09-16
      相关资源
      最近更新 更多