protobuf的下載、編譯和使用


一 背景

  工作中臨時需要使用 protobuf v3.0.2 做消息格式轉換,折騰了很久才搞定,這里特意做一個記錄。

 

二 准備工作

  全程使用的電腦為公司的win7 64位旗艦版,已經預先安裝VS2013和cmake3.10.2,需要注意的是,如果cmake版本過低,編譯時會提示失敗,需要更新的cmake版本,重新執行操作。

  下載protobuf源代碼,公司內網可以訪問github,因此選擇從github直接下載ZIP包:v3.0.2.zip,這里解壓到 “D:\Documents\Program\Tools”。

 

三 編譯

  這里以編譯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\cmake

  (2)mkdir build & cd build

  (3)mkdir x86 & cd x86

  (4)mkdir debug & cd debug

  

  此時位於protobuf-3.0.2/cmake/build/x86/debug,這里創建的debug文件夾只是用於存放相關的cmake file配置信息,無特殊含義。

 

  (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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM