2011-01-27 88 views
14

我们有一个使用OpenGL在C++中编写蛋白质可视化的数学/科学应用程序。它是在过去几年中编写的,广泛使用了GCC 4.4及更高版本中的C++ 0x功能。 (它还与Windows上的Microsoft Visual C++ 10编译,支持许多C++ 0x功能。)如何为iPhone和iPhone模拟器编译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++编译器版本”框中输入“GCC 4.6”并且一切正常。 (另外,Clang的顶级版本 - 截至昨天!)支持一些C++ 0x功能,但尚不支持lambda表达式,所以它可能不适用于)

+0

+1对于忍者真棒蛋白质可视化在手机:) – 2011-01-27 15:19:03

回答

5

除了我的头脑,我会说在苹果公司正式支持它之前,可能没有一个非常干净或简单的方法来做到这一点。您可能已经知道这一点,但Xcode使用旧版GCC的原因是Apple对GNU工具链进行了大量修改,并在APSL(即GPL下的incompatible)下发布了它们的版本。因此,大多数情况下,您可以将他们的GCC版本视为一个完整的分支。尝试将Apple版本的工具链移植到Linux时遇到了这个问题。我有一些有限的成功,但它不是一个小事业...