protoc命令工具使用
protoc参数基本含义
- --go_out用于指定protoc的工作方式和go代码生成的位置
- 参数(用,分开):
- plugins: 生成go代码所用插件
- paths: go代码生成的位置:
- import:$
- 按照生成的go代码的包的全路径来创建目录层级
- 例如:在demo.proto中定义了option go_package="project/demo",那么就会在生成代码指令的路径下创建"${path}/project/demo/demo.pb.go"
- source_relative:$
- 按照proto源文件的目录层级去创建go代码的目录层级
- 例如:demo.proto定在在"/pb/demo"目录下,当前目录在/pb,那么就会在生成代码指令的路径下创建"${path}/demo/demo.pb.go"
- import:$
- 参数(用,分开):
- --go-grpc_out与--go_out类似
- --proto_path/-I:指定proto文件的目录
- 如果你想编译所有proto文件(假设生成Go语言),正常的命令应该是这样的:
protoc --proto_path=. --go_out=. proto/*.proto proto/user/*proto proto/greeter/*proto
但是有的朋友可能会想偷懒,想直接这样:
protoc --proto_path=. --go_out=. proto/*.proto
答案是不行的,因为protoc-gen-go不支持这种形式,最终只会编译common.proto
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?