如何为iPhone和iPhone模拟器编译C++0x代码

14

我们有一个使用OpenGL编写的蛋白质可视化数学/科学应用程序,使用C++编写,并广泛使用GCC 4.4及更高版本中发现的C++0x功能。(它还可以在Windows上使用Microsoft Visual C++ 10进行编译,该编译器支持许多C++0x功能。)

我们想发布一个iPhone/iPad版本,因此我们需要将它从Linux/Windows移植到iPhone上。我们很容易地将类似的程序移植过来——只需添加几个Objective C文件即可完成!但是,由于这里使用了C++0x特性,我们遇到了问题。在OS X上,Xcode使用GCC 4.2.1(来自2007年),该版本早于GCC的C++0x支持。重写所有这些漂亮的C++0x代码以不使用C++0x特性似乎是一个巨大的倒退,而且当向C++0x迈进时,我们真的不想维护一个后移的代码库。

是否有办法使用GCC 4.5(或来自SVN的4.6)针对iPhone和iPhone模拟器?如果有,如何操作?最好能够在Xcode内部完成,因为单击运行/单击调试功能非常有用。只需在Xcode的"C/C++ Compiler Version"框中输入"GCC 4.6",然后一切都能正常工作。

(顺便说一句,截至昨天为止,最新版本的Clang支持一些C++0x功能,但尚不支持lambda表达式,因此对我们来说现在可能还不适用。)


在手机上实现忍者级别的蛋白质可视化,真是太棒了! - Henrik Erlandsson
1
也对在iPhone等设备上使用C++0x的方法感兴趣。 - Colen
1
你可以查看一下PLBlocks是如何实现的。他们提供了一个即插即用的工具链和运行时替代方案,在iOS 2.2+和Mac OS 10.5上提供了blocks支持:http://code.google.com/p/plblocks/ - user557219
1个回答

5

从我的经验来看,我认为在苹果公司官方支持之前,可能没有非常干净或简单的方法来做到这一点。你可能已经知道了,但是Xcode使用旧版本的GCC的原因是苹果对GNU工具链进行了广泛的修改,并在APSL下发布了他们自己的版本(这与GPL不兼容)。因此,在很大程度上,你可以将他们的GCC版本视为完全分叉的版本。当我尝试将苹果公司的工具链移植到Linux时,我遇到了这个问题。我已经有了一些有限的成功,但这并不是一个小的任务...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接