.proto 文件中 import 其他 .proto 文件时的注意事项
import 的文件路径,必须要能在 -I(–proto_path)的路径下找到对应文件。且 import 不能出现 /…/ 这种。
举例:
---my_project
|---protocol
|---aaa
| |---aaa.proto
|---bbb
|---bbb.proto
aaa.proto 不需要依赖其他文件,文件内容是这样:
syntax = "proto3";
package aaa;
option go_package = "my_project/protocol/aaa";
message Something {
string msg = 1;
}
bbb.proto 需要依赖 aaa.proto 中的 Something:
syntax = "proto3";
package bbb;
option go_package = "my_project/protocol/bbb";
import "aaa/aaa.proto";
message Something2 {
aaa.Something something = 1;
}
虽然会报红但是不用管,生成 pb.go 的时候,假设当前在 my_project/protocol/bbb 目录下,则执行
protoc \
-I=. \
-I=./.. \
--go_out=. \
--go_opt=paths=source_relative \
--go-grpc_out=. \
--go-grpc_opt=paths=source_relative \
*.proto
这样 protoc 可以在 -I path + import path => “./…/aaa/aaa.proto” 路径下找到 aaa.proto 这个文件。
当然也可以 import “aaa.proto”,-I=./…/aaa,同样可以执行成功。
版权声明:本文为Canon_in_D_Major原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。