Windows 使用 protoc 编译 Go 语言的 protobuf 文件
[*]下载 protoc 编译器,选择你喜欢的版本
[*]下载后将可执行文件放置在 PATH 的某一个目录里面以便命令行能访问到
[*]下载 protoc 的 go 语言插件,执行命令
go get -u github.com/golang/protobuf/protoc-gen-go或者
go install github.com/golang/protobuf/protoc-gen-go@latest // go 1.16+
[*]检查 GOPATH 是否存在,GOPATH 中是否已经通过上一步安装了 protoc-gen-go 的可执行文件
[*]找个目录,创建 .proto 文件
syntax = "proto3";
package main;
message String {
string value = 1;
}
[*]在目录下的命令行执行
protoc --go_out=./ hello.proto
[*]报错了,惊不惊喜,意不意外(protoc 3.10 版本后可能会报此错误)
$ protoc --go_out=./ hello.proto
protoc-gen-go: unable to determine Go import path for "hello.proto"
Please specify either:
a "go_package" option in the .proto source file, or
a "M" argument on the command line.
See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.
--go_out: protoc-gen-go: Plugin failed with status code 1.在 .proto 文件中添加 go_package 选项
option go_package=".;protocol";go_package 选项里面可根据分号写入两个选项参数
分号前是输出的 .pb.go 文件的路径,路径不存在会自动创建
分号后是输出的 .pb.go 文件的包名
最终 .proto 文件格式为
syntax = "proto3";
option go_package="../protocol;protocol";
package main;
message String {
string value = 1;
}没错,外面的 go_out 选项指定的路径貌似没什么用处,所以直接写一个最简单的就行了,但是这个选项必须存在
至于 "M" argument 为什么不起作用,没找到相关说明,懒得找了~
随手记~
页:
[1]