在Protocol Buffers中,如何从上层目录导入文件?

时间:2011-03-24 13:48:06

标签: c++ protocol-buffers

我在协议缓冲区文件(pcfg_lm.proto)中有以下代码:

import "../types/language.proto";

package nlp;

message PCFGProto {
  required Language lang = 1;
}

当然,在../types/language.proto中存在一个原型文件。但是,当我发出命令时:

protoc pcfg_lm.proto --cpp_out=/tmp

以下是错误消息:

../types/language.proto: File not found.
pcfg_lm.proto: Import "../types/language.proto" was not found or had errors.
pcfg_lm.proto:6:12: "Language" is not defined.

我认为必须有一些方法来指定上层目录中的文件名,而不使用-I标志。但是我该怎么做?

1 个答案:

答案 0 :(得分:19)

您可以使用 - proto_path = 指令指定要搜索导入的目录。如果需要,可以使用多次次。

正确的--proto_path将取决于如何在导入的文件(language.proto)中定义包。

  1. 如果导入的文件(language.proto)包含包类型;

    指定 - proto_path = 父目录 并将导入更改为

    导入“types / language.proto”;

  2. 如果导入的文件没有包

    指定 - proto_path = 父目录/类型 并将导入更改为

    导入“language.proto”;