protobuf的下载、编译和使用

一 背景

  工做中临时须要使用 protobuf v3.0.2 作消息格式转换,折腾了好久才搞定,这里特地作一个记录。html

 

二 准备工做

  全程使用的电脑为公司的win7 64位旗舰版,已经预先安装VS2013和cmake3.10.2,须要注意的是,若是cmake版本太低,编译时会提示失败,须要更新的cmake版本,从新执行操做。git

  下载protobuf源代码,公司内网能够访问github,所以选择从github直接下载ZIP包:v3.0.2.zip,这里解压到 “D:\Documents\Program\Tools”。github

 

三 编译

  这里以编译32位的debug版本为例,若是是release版本,能够将各条命令中的debug路径修改成release路径,最关键的一点是将第5条命令中的 “-DCMAKE_BUILD_TYPE=Debug” 修改成 “-DCMAKE_BUILD_TYPE=Release”。多线程

  选择“开始 - 全部程序 - Visual Studio 2013 - Visual Studio Tools”,双击“VS2013 x86 本机工具命令提示”,依次输入:工具

  (1)cd D:\Documents\Program\Tools\protobuf-3.0.2\cmakeui

  (2)mkdir build & cd buildgoogle

  (3)mkdir x86 & cd x86线程

  (4)mkdir debug & cd debugdebug

  

  此时位于protobuf-3.0.2/cmake/build/x86/debug,这里建立的debug文件夹只是用于存放相关的cmake file配置信息,无特殊含义。3d

 

  (5)cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../../../../install/x86/debug ../../..

 

  

  生成cmake file相关配置文件。

 

  (6)nmake

  

   等待protobuf编译完成,大概10分钟。

   

 

  (7)nmake install

  

  

  完成后会在 protobuf-3.0.2\install\x86\debug 目录下生成 bin、include、lib、cmake 四个文件夹。

  

  bin文件夹中的 protoc.exe 程序能够直接拿来转换.proto文件,此处不作介绍。

  

四 lib库的使用

  为了可以动态地建立message对象,修改message参数,须要调用上面编译出的lib库文件,利用protobuf中的反射机制实现。

  新建C++工程,工程右键,选择属性,配置头文件和lib库文件,注意第2点:

  (1)“C/C++ - 常规 - 附加包含目录”,新增 “D:\Documents\Program\Tools\protobuf-3.0.2\install\x86\debug\include”;

  (2)”C/C++ - 代码生成 - 运行库”,选择 “多线程调试(/MTd)”,与protobuf保持一致,不然编译不过;

  (3)“连接器 - 常规 - 附加库目录”,新增 ”D:\Documents\Program\Tools\protobuf-3.0.2\install\x86\debug\lib”;

  (4)”连接器 - 输入 - 附加依赖项”,新增 “libprotobufd.lib;libprotobuf-lited.lib;libprotocd.lib;”

 

  在编译v3.0.2版本以前,也尝试过最新的v3.3.0版本,编译过程都没有出问题,在使用lib库时,编译出错,先是 “generated_message_table_driven.h” 文件找不到,后是 “metadata_lite.h” 文件找不到,我从 “protobuf-3.3.0\src\google\protobuf” 文件夹下将这两个头文件copy到 “protobuf-3.3.0\install\x86\debug\include\google\protobuf” 中,编译经过(一样须要按第四步进行配置),这应该是版本自身的Bug。

 

  参考博客:https://www.cnblogs.com/tongy0/p/7119778.html

相关文章
相关标签/搜索