目录
- 一、环境相关版本
- 二、go_package配置为当前目录下
- 三、go_package配置为指定目录
- 四、结论
一、环境相关版本
go v1.20.5
protoc v4.24.0
protoc-gen-go v1.26.0
protoc-gen-go版本过高时需要指定包名,即go_package
二、go_package配置为当前目录下
option go_package="/";
/表示生成的pb.go文件在当前目录下。
此时是在demo下执行,所以pb.go文件生成在demo下。
此时是在demo/api下执行,所以pb.go文件生成在demo/api下。
三、go_package配置为指定目录
option go_package="/main";
指定生成的pb.go文件生成在当前路径下的main文件夹中
此时是在demo下执行,所以pb.go文件生成在demo/main下。
此时是在demo/api下执行,所以pb.go文件生成在demo/api/main下。
但是通过go_out的参数 可以指定pb.go生成的层级,如指定了./api,那么此时虽然是在demo层级下执行,但执行的结果在demo/api层级中。
四、结论
所以如果要生成到指定目录下,实际生成的位置是当前位置/go_out位置/go_package位置,如果每次执行的当前位置不一样,记得调整go_out的位置。
如有不对,烦请指出,感谢!