ProtoBuffer由.proto文件生成.cc/.h


ProtoBuffer由.proto文件生成.cc/.h

 

一:編譯源碼
下載地址:http://code.google.com/p/protobuf/downloads/list 
下載后,根據編譯說明進行編譯。
windows 平台,直接打開msvc中的工程文件,直接編譯。
unix/Linux平台,先進行configure,在make。

[下載和編譯過程不詳述,請看這里]

生成的結果中有庫文件有:
libprotobuf.lib

libprotobuf-lite.lib

libprotoc.lib

可執行文件有:
protoc.exe

頭文件:
根據提供的extract_includes.bat文件,提取公共頭文件。

二:編寫proto文件
根據需要,編寫proto文件。

補充一條:如果想使用libprotobuf-lite.lib(會使二進制體積小一些),則在.proto文件的頭部聲明:

option optimize_for = LITE_RUNTIME;

三:生成頭文件
編寫完proto文件后,接下來,用protoc.exe生成.h和.cc文件。
命令如下:
protoc.exe -proto_path=SRC --cpp_out=DST SRC/checklist.proto 
其中--proto_path指出proto文件所在的目錄,--cpp_out則是生成的代碼文件要放的目錄,最后的一個參數指出proto文件的路徑。如上述命令中可以看出,將SRC目錄下的addressbook.proto編譯后放在DST目錄下,應該會生成checklist.pb.h和checklist.pb.cc文件

 

四:Notepad++掛接ProtoBuffer代碼生成器protoc

手動用proto文件生成.h/.cc文件比較麻煩,可以借用notepad++的插件一勞永逸

在插件菜單NppExec(如果沒有就先裝這個插件)->Execute彈出的對話框中輸入以下信息

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. "protoc.exe" --cpp_out $(CURRENT_DIRECTORY) --proto_path $(CURRENT_DIRECTORY) $(FULL_CURRENT_PATH)   

protoc.exe的路徑可以自己指定本機的絕對路徑

編譯出的文件將自動放置到proto文件所在目錄

五:與工程進行集成
需要把生成的.h和.cc導入到工程中去,在需要用到數據解析的文件中,引用該.h文件。
需要把libprotobuf.lib(或libprotobuf-lite.lib)添加到項目的依賴庫中。

 

補充一條:一般用vs編的時候,默認需要在.cpp/.cc文件頭部加預編譯頭文件#include "stdafx.h",但這又會修改.cc文件(原則上生成的.h/.cc文件不要修改),所以解決的方法就是:在VS的solution explorer中右鍵checklist.pb.cc-->屬性-->預編譯頭(precompiled header)->預編譯頭(precompiled header)-->選擇“不使用預編譯頭”("not using precompiled headers")


六:推薦做法:
建立文件夾pbbuff,在其中創建3個子文件夾:bin,lib,include,其中:
bin 存放proto.exe文件 
lib 存放libprotobuf.lib 文件
include 存放公共頭文件
創建環境變量PBROOT,指向pbbuff文件。把%PBROOT%/bin添加到系統的環境變量PATH中,以便能識別protoc命令。

 

 

【參考:http://yleesun.blog.163.com/blog/static/294134022011112102117958/】


免責聲明!

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



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