2011-01-27 12 views
14

Tenemos una aplicación matemática/científica para la visualización de proteínas escrita en C++ utilizando OpenGL. Fue escrito en los últimos años y hace un uso extensivo de las características de C++ 0x que se encuentran en GCC 4.4 y posteriores. (También compila con Microsoft Visual C++ 10 en Windows, que admite muchas características de C++ 0x.)Cómo compilar el código C++ 0x para el simulador de iPhone y iPhone

Queremos liberar una versión de iPhone/iPad, por lo que debemos transportarla de Linux/Windows al iPhone. Hemos portado programas similares con muy poco esfuerzo: ¡agreguemos un puñado de archivos de Objective C, y listo! Sin embargo, debido a las características de C++ 0x que usamos aquí, tenemos un problema. Xcode en OS X usa GCC 4.2.1 (desde 2007) que es anterior al soporte C++ 0x de GCC. Parece un gran paso atrás reescribir todo este hermoso código C++ 0x para no usar las características C++ 0x, y realmente no queremos mantener una base de código backported cuando la marcha hacia C++ 0x es clara.

¿Hay alguna manera de utilizar GCC 4.5 (o 4.6, desde SVN) para apuntar al simulador de iPhone y iPhone? ¿Si es así, cómo? Preferiblemente, desde dentro de Xcode, ya que la funcionalidad de hacer clic y ejecutar/hacer clic y depurar es muy útil. Sería genial poder ingresar a "GCC 4.6" en el cuadro "C/C++ Compiler Version" en Xcode y simplemente hacer que todo funcione.

(Como un lado, la versión top-of-the-tree de Clang - como ayer, admite algunas características de C++ 0x, pero aún no admite expresiones lambda, por lo que es probable que sea nosotros por ahora.)

+0

+1 para la visualización de proteínas ninja impresionante en un teléfono :) –

+1

También estaría interesado en la forma de usar C++ 0x en el iphone etc. – Colen

+1

Puede comprobar cómo PLBlocks hace eso. Tienen una cadena de herramientas de reemplazo y reemplazo en tiempo de ejecución que proporciona bloques para iOS 2.2+ y Mac OS 10.5: http://code.google.com/p/plblocks/ –

Respuesta

5

Por la coronilla, voy a decir que probablemente no haya una manera muy limpia o fácil de hacer esto, hasta que Apple lo apoye oficialmente. Probablemente ya sepas esto, pero la razón por la que Xcode usa una versión anterior de GCC es que Apple hace modificaciones extensas a la cadena de herramientas GNU, y lanza su versión bajo APSL (que es incompatible con la GPL). Entonces, en su mayor parte, puede considerar que su versión de GCC es una bifurcación completa. Me encontré con este problema al intentar portar la versión de Apple de la cadena de herramientas a Linux. Tuve un éxito limitado, pero no es una empresa pequeña ...

Cuestiones relacionadas