proto中如何导入其它文件夹下的proto文件?

1,360 阅读1分钟

1 import

今天写项目发现, 需要从在一个proto文件中导入另一个文件夹中的proto文件的一个结构, 于是在目录下写了一个hellohi文件夹, 来测试导包的路径应该怎么写? 我相信大家疑惑的一定是这个问题

image.png

看图, 为什么不是从app文件夹开始, 或者ws_chat文件夹开始呢?

这里的测试内容就是 computer.proto从component.proto导入其中的两个结构体, 上面这里是我已经测试成功了, 发现必须从hellohi这个文件夹开始, 为什么呢?

先看看component.proto是怎么写的

syntax = "proto3";
package msg;

message CPU {
  string Name = 1;
  int64 Frequency = 2;
}
message Memory {
  string Name = 1;
  int64 Cap = 2;
}

原因是这样,

import "hellohi/app/msg/rpc/component.proto";
相当于
import "cwd/hellohi/app/msg/rpc/component.proto";{cwd}/hellohi/app/msg/rpc/component.proto"; 而{cwd}就是本项目的工作路径, 即~/code/ws_chat/
所以, proto导包要从工作路径的下一级路径开始写

2 protoc

导了包的proto文件
protoc就不能在${cwd}/hellohi/app/msg/rpc/下执行了
而要在${cwd}下执行