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彈出的對話框中輸入以下信息
- "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/】
