proto文件转为头文件和源码
proto文件是一种预编译的规定文件,用来告诉gRPC 的服务如何生成对应的代码。
具体的使用方式请参考:介绍文档:proto 文件的关键字介绍
具体的说,一个proto文件分为三部分:指定环境,制定消息结构,制定接口
指定环境
在这里插入图片描述
1:代表使用的proto接口适用版本是 2 版本还是 3 版本。这里我们使用 3 版本
2: 这里指定生成的代码中的命名空间的叫法。
制定消息结构
消息结构是指:以message
关键字指定的数据结构体。用法类似于C 语言中请添加图片描述
的 struct
这里我们使用了 repeated
关键字,他的用法是指定对象为数组。
具体的其他关键字请参见扩展阅读:介绍文档:proto 文件的关键字介绍
制定接口
请添加图片描述
接口适用rpc
关键字声明,另外同类型的接口可以使用service
关键字设置为一个类对象中,便于分别管理
源码的使用
生成库文件和源码
#!/bin/bash
# 检查是否提供了文件名参数
if [ -z "$1" ]; then
echo "用法: $0 文件名 输出目录"
exit 1
fi
# 设置输出目录
# 检查是否将输出目录设置
if [ -z "$2" ]; then
OUTDIR_PROTO=$(dirname "$0")
else
OUTDIR_PROTO=$2
fi
# 使用提供的文件名和语言
NAME_PROTO=$1
protoc --cpp_out=. $NAME_PROTO
protoc --cpp_out=$OUTDIR_PROTO --grpc_out=$OUTDIR_PROTO --plugin=protoc-gen-grpc=/usr/local/bin/grpc_cpp_plugin $NAME_PROTO
这里我写好一个脚本,用以生成对应的c++格式接口库文件, 需要注意的是,脚本中的protoc-gen-grpc
指定的程序地点是要和自己安装时保持一致的。
使用时,只要传入proto后缀的文件名 和输出目录,就能得到对应的库文件。
库文件包括两种,*.pb.h
、*.grpc.pb.h
前者是message
定义的结构体的声明定义文件。后者是接口的 声明定义文件。
使用方式
在自己的代码中 引用 grpc 的头文件,和对应的自己需要的生成的库文件,如下:
源码的编译
请参照 官方提供的cmakefile 编译工具,路径如下:you/path/grpc-v1.45.2/examples/cpp/helloworld/CMakeLists.txt
分享一个有趣的 学习链接:https://xxetb.xet.tech/s/HY8za