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

时间:2011-01-27 15:11:00

标签: iphone gcc c++11

我们有一个使用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(或4.6,来自SVN)来定位iPhone和iPhone模拟器?如果是这样,怎么样?优选地,从Xcode内部,因为点击并运行/点击和调试功能非常有用。能够在Xcode的“C / C ++编译器版本”框中输入“GCC 4.6”真是太棒了,只是让一切正常。

(顺便说一下,Clang的顶级版本 - 就在昨天! - 支持一些C ++ 0x功能,但还不支持lambda表达式,所以它可能适合我们现在。)

1 个答案:

答案 0 :(得分:5)

在我的脑海中,我要说可能没有一个非常干净或简单的方法来做到这一点,直到Apple正式支持它。您可能已经知道这一点,但Xcode使用较旧版本的GCC的原因是Apple对GNU工具链进行了大量修改,并在APSL下发布了它们的版本(使用GPL incompatible)。所以在大多数情况下,你可以认为他们的GCC版本是一个完整的分支。我试图将Apple版本的工具链移植到Linux时遇到了这个问题。我的成功有限,但这不是一件小事......