使用 ProtoBuf 将 message 文件生成 go 文件
因工作需求,需要安装 protobuf 工具,并且根据 proto 文件生成 go 文件,下面对安装以及生成 go 文件的过程做记录
安装 ProtoBuf
访问 ProtoBuf 的 Github 仓库,使用git将该仓库克隆下来
1 | |
在执行完以上命令之后进入到该目录,确定好 ProtoBuf 的版本,可以使用 git checkout 命令来切换。
确认好版本之后就进行正式编译和安装,执行以下命令并等待结束:
1 | |
使用 ProtoBuf 来生成 Go 文件
protobuf 自带对 Java、c++、js、python、ruby、php 的文件生成。
安装 protoc-gen-go 插件
生成 go 的文件需要自己安装 protoc-gen-go 插件才能生成;安装命令如下:
1 | |
保证网络稳定,在安装完之后默认会是在 $GOPATH/bin 目录下,如果没有配置 $GOPATH 的话,会出现在 ~/go 目录即 home 目录。
导出至环境变量
该可执行程序需要导入到环境变量,在其他文件内使用,使用以下命令
1 | |
编译生成 go 文件
进入到 proto 文件夹中,因为 go 的包语句原因,每一个单独的文件都会存放在与 package 语句后包名相同的物理目录名
比如生成的
common.pb.gogo 文件里的package语句跟着的包是std_msgs,那么存放common.pb.go文件的物理目录就得叫做std_msgs。
这次我生成的文件因为这个原因,都得单独执行生成语句。
1 | |
注意,如果上一个步骤的插件没有安装成功,那么–go_out 该命令是不成功的
而且这种给每个 proto 文件单独执行转换语句的方法,生成的 go 文件里面是存在依赖问题的;也就是说 A 文件要用到 B 文件里的结构体,但是找不到 B 的结构体。
那么在这次生成 go 文件的过程中,需要在 go 文件中手动的引入包,使文件内的结构体能够正确饮用。
使用 ProtoBuf 将 message 文件生成 go 文件
https://sunshinechen.cn/2022/05/07/使用ProtoBuf将message文件生成go文件/