zoukankan      html  css  js  c++  java
  • 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 ...

      #grpc框架命令 -- 如果不使用grpc可以省略
      protoc -I=${SRC_DIR} --grpc_out=${DST_DIR} --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ${SRC_DIR}/*.prot

      #protobuf命令

      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
  • 相关阅读:
    抽象
    数据处理—异常值处理
    数据处理—数据连续属性离散化
    数据处理—缺失值处理
    数据处理—归一化
    数据特征—正态性检验
    数据特征—相关性分析
    数据分析—统计分析
    数据特征—帕累托分析
    特征分析—对比分析
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/9689553.html
Copyright © 2011-2022 走看看