使用xCode 5编译protobuf

Huy*_*ran 5 protocol-buffers llvm-clang ios7 xcode5

我想在我的项目中使用protobuf(https://code.google.com/p/protobuf/)

您是否使用xCode 5成功编译了protobuf,请帮助分享您的经验?

谢谢.

Ben*_*ith 10

您可以通过在Podfile中添加以下行,使用Cocoapods将对Google Protocol Buffers的支持添加到Xcode 5项目中.

pod 'GoogleProtobuf', '~> 2.5.0'
Run Code Online (Sandbox Code Playgroud)

这会将protobuf代码的C++版本放入到项目的Pod中.它还会在项目protoc的文件夹中添加编译器Pods/GoogleProtobuf/bin/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
Run Code Online (Sandbox Code Playgroud)

设置输出文件以包括以下内容:

$(INPUT_FILE_DIR)/cpp/$(INPUT_FILE_BASE).pb.h
$(INPUT_FILE_DIR)/cpp/$(INPUT_FILE_BASE).pb.cc
Run Code Online (Sandbox Code Playgroud)

.proto您在项目中包含的任何文件现在都将自动转换为C++,然后作为构建的一部分进行编译.


Ben*_*ith 10

如果你不介意自己构建Google Protobuf,那么使用Cocoapods的一个很好的选择就是在这里运行bash脚本.

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

该脚本将生成适当的Google Protobuf版本,支持i386,armv7,armv7s,arm64和x86_64架构.它将生成一个通用的静态库.它还将生成用于OS X的protoc编译器.