Sword protobuf学习二
Posted zhanggaofeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sword protobuf学习二相关的知识,希望对你有一定的参考价值。
编写protobuf消息文件
文件格式: xxx.proto
//标明使用哪个版本的protobuf,默认2.0版本 syntax = "proto3"; //类似于c++中的namespace package commun; //message类首字母需要大写,message类中所有的成员属性最好全部小写,因为在赋值时,protobuf提供的方法名字全部是小写的 message Say{ //字段规则移除了"required",并把"optional"改名为"singular"; //singular修饰表示该字段可以有0个或1个值(不超过1个),即可写也可以不写 int32 code = 1; string data = 2; //定义一个数组,数组元素是string类型 repeated关键字是用来定义一个数组的 repeated string name = 3; //定义map map<int32, string> projects = 4; //定义字符数组,用来存二进制文件数据 bytes audio = 5; //定义一个变量,来存储文件的长度,filesize与audio这个变量紧密相关 int32 filesize = 6; }
protobuf生成对应语言文件的脚本如下
#!/bin/bash SRC_DIR=. DST_DIR=. #build protobuf #protoc选项 #--proto_path=SRC_DIR #SRC_DIR声明了一个.proto文件所在的解析import具体目录。如果忽略该值,则使用当前目录。 #如果有多个目录则可以多次调用--proto_path,它们将会顺序的被访问并执行导入。-I=IMPORT_PATH是--proto_path的简化形式。 #-I主要是用在proto文件中有import关键字的场景下,没有import关键字可以不用-I #不同目录下的多文件编译 #protoc -I=${SRC_DIR} --cpp_out=$DST_DIR 文件目录1 文件目录2 文件目录3 ... protoc -I=${SRC_DIR} --cpp_out=$DST_DIR $SRC_DIR/*.proto mv ./*.h ../include #修改文件名,个人喜好cpp结尾 for name in `ls $DST_DIR/*.cc` do mv $name ${name/[.]cc/.cpp} done mv ./*.cpp ../src
以上是关于Sword protobuf学习二的主要内容,如果未能解决你的问题,请参考以下文章