2011-01-27 87 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時遇到了這個問題。我有一些有限的成功,但它不是一個小事業...