• Protocol Buffer学习教程之编译器与类文件(三)


    Protocol Buffer学习教程之编译器与类文件()

     

     

     

    1. 概述

    在前面两篇中,介绍了Protobuf的基本概念、应用场景、与protobuf的语法等。在此篇中将介绍如何自己编译protobuf的库,不同Visual Studio之间的protobuf库一般不能通用,会有兼容性问题,下面我们将讲解,如何获取对应Visual Studio版本的protobuf库与编译器。

     

     

    2. 环境准备

    编译protobuf需要工具CMake(下载链接)Visual Studio 2012版本或者更高版本(下载链接)。下载CMakeWindows版本,安装后在命令行中输入CMake命令,如果提示相关用法,说明安装CMake成功,如下:

     

    关于Visual Studio的安装在此不作讲解。

    Protobuf源码的下载,参见《Protocol Buffer学习教程之开篇概述()

     

    3. 编译源码

     

     

    打开Protobuf源码下的CmakeReadme.md文件,此文件将详细介绍编译库文件的步骤。

    VS2015为例,在开始菜单中找到VS2015 x64 Native Tools Command Prompt工具,打开工具,如图:

     

    然后进入到protobuf文件的cmake目录,然后创建build目录,并进入build目录:

    C:Path oprotobufcmake>mkdir build & cd build

    C:Path oprotobufcmakeuild>

     

    配置release版本:再在build目录创建release目录,并进入到release目录,关执行cmake命令:

    C:Path oprotobufcmakeuild>mkdir release & cd release

    C:Path oprotobufcmakeuild elease>cmake -G "NMake Makefiles" ^

         -DCMAKE_BUILD_TYPE=Release ^

         -DCMAKE_INSTALL_PREFIX=../../../../install ^

         ../..

     

    配置debug版本:回到build目录,再在build目录创建debug目录,并进入到debug目录,关执行cmake命令:

    C:Path oprotobufcmakeuild>mkdir debug & cd debug

    C:Path oprotobufcmakeuilddebug>cmake -G "NMake Makefiles" ^

         -DCMAKE_BUILD_TYPE=Debug ^

         -DCMAKE_INSTALL_PREFIX=../../../../install ^

         ../..

     

    生成Visual Studio工程文件:回到上一级目录,创建solution目录,然后进入到此目录,此步骤很关键,通过此命令来生成不同版本的工程,在命令窗口输入cmake --help命令,来查看相关的参数,支持生成的VS工程版本。执行以下文件:

    C:Path oprotobufcmakeuild>mkdir solution & cd solution

    C:Path oprotobufcmakeuildsolution>cmake -G "Visual Studio 12 2013 Win64" ^

         -DCMAKE_INSTALL_PREFIX=../../../../install ^

         ../.. -Dprotobuf_BUILD_TESTS=OFF

    生成32位的话,把命令中的Win64去掉,要生成不同版本的VS工程的话,修改“Visual Studio 12 2013”。

     

    最后编译库:release版本,执行命令:

    C:Path oprotobufcmakeuild elease>nmake

    Debug版本,执行命令:

    C:Path oprotobufcmakeuilddebug>nmake

    或者直接用VS打开solution目录下的工程编译即可。

    4.测试生成的编译器

    生成自己的类

    如果想把你的proto文件生成Java,Python或者C++代码,你需要通过protoc编译器来编译proto文件,如果没有安装proto编译器,可以从下载download the package下载后,根据README文件的步骤处理即可。

    编译器使用方法如下,发命令窗口输入如下格式命令:

    protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR path/to/file.proto

    protoc为编译器。以cmd窗口输入完整路径,或者直接把proto执行文件拖拽进入cmd窗口即可。

    IMPORT_PATH为被包含文件的查找路径,如被编译的proto文件有import指令时,需要查找被包含的文件,就是通过此参数指定的路径来查找。如果有多个目录,可以通过--proto_path多次指定,编译器将按顺序查找。-I=IMPORT_PAT

    Hproto_path的简写。

    你可以提供一个或者多个文件输出路径

    --cpp_out指在DST_DIR目录下生成C++代码,更多内容参见C++ generated code reference

    --java_out指在DST_DIR目录下生成java代码,更多内容参见Java generated code reference

    --python_out指在DST_DIR目录下生成python代码,更多内容参见Python generated code reference

    作为额外的约定,DST_DIR如果以.zip或者.jar结尾的话,编译器将输入一个.zip格式文件,.jar的话将输出一个java jar声明必须的manifest文件。如果归档文件已经存在的话,将被覆盖。

    一次可以指定多个.proto文件作为输入文件,但是必须每个文件用IMPORT_

    PATH格式引入,尽管所有文件都在同一目录下也一

  • 相关阅读:
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉树的后序遍历
    从上往下打印二叉树
    栈的压入,弹出序列
    包含min函数的栈
    JS基础知识
    有序列表、无序列表、网页的格式和布局
    样式表(宽度和高度、背景字体、对齐方式边界与边框)
  • 原文地址:https://www.cnblogs.com/MingoJiang/p/8682010.html
Copyright © 2020-2023  润新知