美文网首页CPP
自动化脚本由 protobuf 生成 C++ 文件

自动化脚本由 protobuf 生成 C++ 文件

作者: 顽强的猫尾草 | 来源:发表于2018-08-28 10:59 被阅读17次

    generate_cpp_py.sh 文件中:

    #!/bin/bash
    set -e
    basepath=$(cd `dirname $0`; pwd)
    cd ${basepath}
    protopath=../proto/
    cppoutpath=../proto/generatedcpp
    if [ ! -d ${cppoutpath} ];then
        mkdir ${cppoutpath}
    fi
    GRPC_CPP_PLUGIN=grpc_cpp_plugin
    GRPC_CPP_PLUGIN_PATH=`which ${GRPC_CPP_PLUGIN}`
    
    protoc -I=$protopath --cpp_out=${cppoutpath} $protopath/ps/*.proto
    protoc -I=$protopath --cpp_out=${cppoutpath} $protopath/feeder/*.proto
    

    set -e 命令用法总结如下:

    1. 当命令的返回值为非零状态时,则立即退出脚本的执行;
    2. 作用范围只限于脚本执行的当前进程,不作用于其创建的子进程;
    3. 若想根据命令执行的返回值输出对应的 log 时,最好不要采用 set -e 选项,而是通过配合 exit 命令来达到输出 log 并退出执行的目的。

    在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的。因为他返回当前路径 .。这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置。

    if 语句块的使用方法见《shell中if语句的使用》,此处的作用是判断是否有此文件夹,若没有则创建。

    which 命令用于搜索文件所在位置,whichwhereis 的区别见《Linux命令搜索命令whereis与which的区别》

    最后就是 proto 的生成命令:

    • -I--proto_path 的缩写,指定要在其中搜索 import 的目录;
    • --cpp_out 指定生成 C++ 头文件和源文件的目录。
    • 最后指定了要使用的 proto 文件,生成的 C++ 文件的名字和这些 proto 文件名相对应。

    运行脚本:

    sh generate_cpp_py.sh
    

    相关文章

      网友评论

        本文标题:自动化脚本由 protobuf 生成 C++ 文件

        本文链接:https://www.haomeiwen.com/subject/uycfwftx.html