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
оттуда.