超碰网站正在建设中,福建省住建厅网站官网,大图网 网站,培训机构白名单最近在研究序列化#xff0c;每次的proto文件手敲生成代码指令都很麻烦#xff0c;干脆自己写一个泛用脚本#xff0c;这样以后使用时候就方便了。
废话不多说#xff0c;首先上代码#xff1a;
#!/bin/bash
# 检查是否提供了文件名参数
if [ -z $1 ]; then…最近在研究序列化每次的proto文件手敲生成代码指令都很麻烦干脆自己写一个泛用脚本这样以后使用时候就方便了。
废话不多说首先上代码
#!/bin/bash
# 检查是否提供了文件名参数
if [ -z $1 ]; thenecho 用法: $0 文件名 输出目录(默认当前目录)exit 1
fi
# 设置输出目录
# 检查是否将输出目录设置
if [ -z $2 ]; then OUTDIR_PROTO$(dirname $0)
elseOUTDIR_PROTO$2
fi
# 使用提供的文件名和语言
NAME_PROTO$1
protoc --cpp_out. $NAME_PROTO
protoc --cpp_out$OUTDIR_PROTO --grpc_out$OUTDIR_PROTO --pluginprotoc-gen-grpc/usr/local/bin/grpc_cpp_plugin $NAME_PROTO
下面是对脚本的逐行解析 这是一个使用Bash脚本编写的简单示例用于将Protocol Buffersprotobuf文件编译为gRPC库。以下是代码的逐行解释
第一行#!/bin/bash指定脚本使用Bash解释器。第二行# 检查是否提供了文件名参数检查是否提供了文件名参数。如果没有提供输出用法说明并退出。第四行# 设置输出目录设置输出目录。如果没有设置输出目录输出默认输出目录。第五行# 检查是否将输出目录设置检查是否将输出目录设置。如果没有设置将输出目录设置为默认目录。第六行OUTDIR_PROTO$(dirname $0)获取脚本所在的目录。第七行if [ -z $2 ]; then如果没有设置输出目录将输出目录设置为默认目录。第八行OUTDIR_PROTO$2将设置的输出目录赋值给OUTDIR_PROTO变量。第九行NAME_PROTO$1获取提供的文件名参数。第十行protoc --cpp_out. $NAME_PROTO使用protoc命令将文件编译为C代码。十一行protoc --cpp_out$OUTDIR_PROTO --grpc_out$OUTDIR_PROTO --pluginprotoc-gen-grpc/usr/local/bin/grpc_cpp_plugin $NAME_PROTO使用protoc命令将文件编译为gRPC库。1. 第一行#!/bin/bash指定脚本使用Bash解释器。第二行# 检查是否提供了文件名参数检查是否提供了文件名参数。如果没有提供输出用法说明并退出。第四行# 设置输出目录设置输出目录。如果没有设置输出目录输出默认输出目录。第五行# 检查是否将输出目录设置检查是否将输出目录设置。如果没有设置将输出目录设置为默认目录。第六行OUTDIR_PROTO$(dirname $0)获取脚本所在的目录。第七行if [ -z $2 ]; then如果没有设置输出目录将输出目录设置为默认目录。第八行OUTDIR_PROTO$2将设置的输出目录赋值给OUTDIR_PROTO变量。第九行NAME_PROTO$1获取提供的文件名参数。第十行protoc --cpp_out. $NAME_PROTO使用protoc命令将文件编译为C代码。十一行protoc --cpp_out$OUTDIR_PROTO --grpc_out$OUTDIR_PROTO --pluginprotoc-gen-grpc/usr/local/bin/grpc_cpp_plugin $NAME_PROTO使用protoc命令将文件编译为gRPC库。
调用方式
[zrylocalhost protos]$ ./test.sh DeviceData.proto 这里是我调用了一个 名为DeviceData.proto的文件你可以换成自己的proto文件。
[zrylocalhost protos]$ ./test.sh DeviceData.proto ./GRPC_CODE 这里是我调用了一个 名为DeviceData.proto的文件你可以换成自己的proto文件。把生成路径设置为了当前目录下的一个子文件夹这样方便管理。 分享一个有趣的 学习链接https://xxetb.xet.tech/s/HY8za