为了账号安全,请及时绑定邮箱和手机立即绑定

protoc --go_opt=paths=source_relative

protoc --go_opt=paths=source_relative

Go
qq_花开花谢_0 2022-10-24 16:28:54
我很难弄清楚protoc命令和 go 插件。有什么区别:protoc \    # Directory where you want the compiler to write your Go output.    --go_out=.    # vs ?    --go_opt=paths=source_relative    # vs ?    --go-grpc_out=.    # vs ?    --go-grpc_opt=paths=source_relative如果--go_opt生成<name>.pb.go文件并--go-grpc_opt生成<name>_grpc.pb.go文件为什么还要有--go_out?您能否对 protoc 有所了解 -文档没有说什么--go-grpc_opt?并且protoc -h甚至不列出作为 OUT_DIR 吗?注意:我使用此文档安装
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

为什么还要--go_out?

所以,这里要理解的是 gRPC 与 Protocol Buffers 不同,gRPC 使用 Protocol Buffers 但还有其他框架也在使用它们。所以我们需要生成两者。

现在,为了生成协议缓冲区相关的代码,你需要使用--go_out你提到的。但对于 gRPC 代码,您需要使用--go-grpc_out.

和 --go-grpc_opt 生成 _grpc.pb.go 文件

不,--go-grpc_out有。

您能否对 protoc 有所了解 - 文档对 --go-grpc_opt 没有保留任何内容?

然后,在生成代码之前,您可以传递一些选项,这就是--go_opt目的--go-grpc_opt。第一个传递用于 Protobuf 生成的选项,第二个传递用于 gRPC 生成的选项。选项非常模糊,并且没有所有这些的官方列表,但是您使用source_relative(告诉 protoc 使用相对路径)作为路径,还有module选项(帮助 protoc 知道要在正确文件夹中生成的 go 模块名称)

而且 protoc -h 甚至不作为 OUT_DIR 列出?

最后,protoc 不正式支持 Go 作为输出,你需要安装一个外部插件,这就是为什么protoc -h不显示--go_out. 可以在此处找到相关讨论。


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信