我想在我的项目中使用protobuf(https://code.google.com/p/protobuf/)。
你是否已经成功地在xCode 5中编译过protobuf,请分享一下你的经验?
谢谢!
我想在我的项目中使用protobuf(https://code.google.com/p/protobuf/)。
你是否已经成功地在xCode 5中编译过protobuf,请分享一下你的经验?
谢谢!
您可以通过将以下代码添加到您的Podfile中,使用Cocoapods为Xcode 5项目添加对Google Protocol Buffers的支持。
pod 'GoogleProtobuf', '~> 2.5.0'
这将把protobuf的C++版本代码放入您项目的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++,并作为构建的一部分进行编译。
Undefined symbols for architecture armv7: "_deflate", referenced from:
我已经尝试将libz.dylib
作为链接二进制库添加,但没有帮助。你有什么建议来解决这个问题吗? - tmbobrew install protobuf
)而不是Cocoapods进行了此操作。按照上述描述的构建规则设置,它可以完美地工作!一个值得注意的补充说明可能对某些人(如我)不太明显:“包含在您的项目中”实际上意味着将.proto
文件添加到您项目的“编译源”构建阶段中。 - bfx