2013-10-18 95 views

回答

10

如果您不介意自己創建Google Protobuf,那麼使用Cocoapods的一個好的選擇是在這裏運行bash腳本。

https://gist.github.com/BennettSmith/7150245

這個腳本會產生谷歌的Protobuf的正確構建,支持I386,ARMv7的,armv7s,arm64和x86_64架構。它將產生一個通用的靜態庫。它也將生成protoc編譯器,以便在OS X上使用。

+0

這個腳本就像一個魅力。謝謝!!! –

+1

我只是想知道這個scipt能用於protobuf 2.4.1嗎?我可以刪除x86_64的版本(只需iOS版)。 –

+0

我不確定2.4.1。是否有特定的原因使用該版本,而不是更新的2.5.0? –

9

通過將以下行添加到您的Podfile中,您可以使用Cocoapods將支持Google Protocol Buffers添加到Xcode 5項目。

pod 'GoogleProtobuf', '~> 2.5.0' 

這會將C++版本的protobuf代碼放到您的項目的Pod中。它還會在項目中的文件夾Pods/GoogleProtobuf/bin/protoc中添加protoc編譯器。

您可以在自己的項目中創建自定義構建規則,該規則會自動將.proto文件轉換爲.ph.{h,cc}文件。以下是我如何做到這一點:

將生成規則設置爲「處理名稱匹配的源文件:* .proto使用自定義腳本」。該腳本應包括以下內容:

cd ${INPUT_FILE_DIR} 
${SRCROOT}/Pods/GoogleProtobuf/bin/protoc --proto_path=${INPUT_FILE_DIR} ${INPUT_FILE_PATH} --cpp_out=${INPUT_FILE_DIR}/cpp 

設置輸出文件,包括以下內容:

$(INPUT_FILE_DIR)/cpp/$(INPUT_FILE_BASE).pb.h 
$(INPUT_FILE_DIR)/cpp/$(INPUT_FILE_BASE).pb.cc 

任何.proto文件,你在你的項目中包括現在會自動轉換爲C++,然後編譯爲部分你的構建。

+0

謝謝!我會試一試。 –

+0

我在這裏發現了一個解決方案的問題。在Cocoapod中完成的構建只能在iOS模擬器中使用。我正在爲此問題尋求解決方案。現在,您可以使用我在下面的備選答案中發佈的其他方法。 –

+0

你好史密斯,我用CocoaPods for iPad製作了protobuf(2.4.1),它可以工作。我會看看你的新解決方案。謝謝! –