安裝指定的Protobuf版本到Mac-Protobuf2.6.1,
最近新項目用到了Protobuf來儲存資料,安裝時遇到了不少坑,網上也有很多把Protobuf整合到iOS系統上但是坑很多
下邊總結一下安裝流程:
查看官方文檔
源碼在 https://github.com/google/protobuf , 如果不想自己編譯獲得最新版本,則可以下載官方編譯好的各個平台的,:https://github.com/google/protobuf/releases找到自己需要的版本,例如要裝2.6.1的話下載protobuf-2.6.1.zip
第一步:cd /Users/sddd/Downloads/protobuf-2.6.1
第二步:運行 ./configure
第三步:運行 make
第四步:運行 make check
第五步:運行 make install
如何沒有許可權的話,在前邊加上sudo
到這裡就可以安裝成功了,具體整合到項目上可以查看轉寄的部落格上
在終端protoc --version
接下來是如何編譯一個proto的檔案
1: 開啟終端: cd 到放proto的檔案夾下
2:輸入命令:protoc --plugin=/usr/local/bin/protoc addressbook.proto --cpp_out="./" 這個是產生c++ .h .cc檔案
3:輸入命令:protoc --plugin=/usr/local/bin/protoc addressbook.proto --objc_out="./" 這個是產生oc .h .m 檔案
如果要安裝最新版本的話,下面還有一個方案
首先:開啟終端
brew -v
如果沒有安裝的話ruby -e $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)
brew install automakebrew install libtoolbrew install protobuf就是利用brew下載安裝了。protobuf就是我們想要的,另外兩個是依賴庫接著git clone https://github.com/alexeyxo/protobuf-objc.git 完成後
cd ~/protobuf-objc
./autogen.sh
./configure
~/protobuf-objc其實就是剛剛clone的檔案目錄
進行./configure 可能會報錯,不過別著急,先分析錯誤資訊
configure: error:
ERROR: protobuf headers are required.
You must either install protobuf from google,
or if you have it installed in a custom location
you must add '-Iincludedir' to CXXFLAGS
and '-Llibdir' to LDFLAGS.
If you did not specify a prefix when installing
protobuf, try
'./configure CXXFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib'
In some 64-bit environments, try LDFLAGS=-L/usr/local/lib64.
仔細看,不難發現終端給出瞭解決辦法,我想這應該是跟系統是不是64位有關吧(個人猜測)。
./configure CXXFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib
運行通過後,
make
make install
最終產生的外掛程式名字為protoc-gen-objc,會被安裝到/usr/local/bin/目錄下。
你可以
cd /usr/local/bin/
ls -a
按照我的方法,肯定能看見protoc-gen-objc。
一切準備就緒,我們來測試下。
在案頭建立一個 ProtoBuf的檔案夾。然後
cd ~/Desktop/ProtoBuf
protoc --plugin=/usr/local/bin/protoc-gen-objc person.proto --objc_out=./
protoc會自動在/usr/local/bin/目錄下尋找名為”protoc-gen-objc”的外掛程式,並使用該外掛程式編譯.proto檔案,最終產生兩個檔案:
Person.pb.h
Person.pb.m
推薦比較好的部落格:
http://www.jianshu.com/p/d5642a7d1e10?nomobile=yes
http://www.jianshu.com/p/cbbb0bfd0bb6