zoukankan      html  css  js  c++  java
  • 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格式引入,尽管所有文件都在同一目录下也一

  • 相关阅读:
    (转载)SAPI 包含sphelper.h编译错误解决方案
    C++11标准的智能指针、野指针、内存泄露的理解(日后还会补充,先浅谈自己的理解)
    504. Base 7(LeetCode)
    242. Valid Anagram(LeetCode)
    169. Majority Element(LeetCode)
    100. Same Tree(LeetCode)
    171. Excel Sheet Column Number(LeetCode)
    168. Excel Sheet Column Title(LeetCode)
    122.Best Time to Buy and Sell Stock II(LeetCode)
    404. Sum of Left Leaves(LeetCode)
  • 原文地址:https://www.cnblogs.com/MingoJiang/p/8682010.html
Copyright © 2011-2022 走看看