开发者

In Protocol Buffers, how to import a file from the upper level directory?

I have the following code in a protocol buffer file(pcfg_lm.proto):

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

package nlp;

message PCFGProto {
  required Lan开发者_运维问答guage lang = 1;
}

And of course there is a proto file exists at ../types/language.proto. However, when I issue the command:

protoc pcfg_lm.proto --cpp_out=/tmp

Here is the error message:

../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 think there must be some way to specify the file names in the upper level directories, without using the -I flag. But how do I do that?


You can use the --proto_path= directive to specify which directories to search for imports. It can be used multiple times if needed.

The correct --proto_path will depend on how the package is defined in the imported file (language.proto).

  1. If the imported file (language.proto) contains package types;

    specify --proto_path=Parent directory and change the import to

    import "types/language.proto";

  2. If the imported file has no package

    specify --proto_path=Parent directory/types and change the import to

    import "language.proto";

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜