如何为iphone编译简化的cpp协议缓冲库?

时间:2014-08-27 12:17:10

标签: c++ ios iphone xcode protocol-buffers

目标:

我正在寻找一种方法,使用xcode作为我的IDE,将协议缓冲区(通过谷歌)实现到iphone-app中。 https://code.google.com/p/protobuf/

背景:

谷歌直接支持C ++,Java,Python。

ObjC的第三方项目的开发似乎在几年前停止了。 https://code.google.com/p/protobuf-objc/

在搜索协议缓冲区和iphone时,我通常会在C#中找到对两个第三方项目的两个引用:

一个由Marc Gravell撰写:https://code.google.com/p/protobuf-net/

和Jonathan Skeet撰写的一篇:https://code.google.com/p/protobuf-csharp-port/

(我不确定它们是否或如何与xcode一起使用并在此上发布了一个问题:https://stackoverflow.com/questions/25524852/can-i-use-protobuf-net-or-protobuf-csharp-port-with-xcode

情况:

Bennett Smith对iphone开发的另一个有趣的方法是“简单地”使用Google c ++源https://gist.github.com/BennettSmith/7150245)。 (btw awesome!)脚本工作得非常好并产生两个库:常规库和精简库。

让我好奇的是这些库(.a文件)的大小。包括所有构建(x86_64_mac,i386_ios_sim,armv7,armv7s,arm64),常规库的大小接近89 MB,生命库的大小仍然大于8 MB。

的问题:

1。)为什么文件那么大?据我所知,用于Android实现protobuf的Lite库接近100 KB,而Marc Gravell的iphone库(见上文)也接近100 KB。

我尝试通过不包括x86_64_mac和i386_ios_sim(将脚本中为控件提供的设置为0)来减小大小,但脚本以不留任何文件的错误结束。 (当仅消除i386_ios_sim时,它似乎可以工作,但仅将大小减小到6-7 MB。) 2.)有谁知道如何配置脚本只包含iphone-builds?

3.。我怎样才能进一步减少这种C ++库的大小(或者至少是合理的)?有没有人建议如何将谷歌cpp文件剥离到“简约”构建并编译库?到目前为止,我发现只有一个建议删除编译器和unittest文件的链接。 (http://rxwen.blogspot.de/2011/11/use-protobuf-on-iphone-app.html)但遗憾的是,我还没有看到任何关于其他文件相关性的讨论。

4。)(Bonus :)当使用这个C ++库时,我将不得不使用包装器对象。虽然我在网上找到了关于这个的一般文章,但是有人知道我可以看一下protobufs的解决方案吗?

1 个答案:

答案 0 :(得分:1)