В буфере протокола, как импортировать файл из каталога верхнего уровня? - PullRequest
12 голосов
/ 24 марта 2011

У меня есть следующий код в файле буфера протокола (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 Ответ

19 голосов
/ 26 марта 2011

Вы можете использовать директиву - proto_path = , чтобы указать, какие каталоги искать для импорта. При необходимости его можно использовать несколько раз.

Правильный --proto_path будет зависеть от того, как пакет определен в импортированном файле (language.proto).

  1. Если импортируемый файл (language.proto) содержит типов пакетов;

    укажите - proto_path = Родительский каталог и измените импорт на

    import "types / language.proto";

  2. Если в импортированном файле нет пакета

    указать - proto_path = Родительский каталог / типы и изменить импорт на

    import "language.proto";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...