14 Stimmen

Wie man C++0x-Code für das iPhone und den iPhone-Simulator kompiliert

Wir haben eine Mathematik-/Wissenschaftsanwendung zur Proteinvisualisierung, die in C++ mit OpenGL geschrieben ist. Sie wurde in den letzten Jahren entwickelt und macht umfangreichen Gebrauch von den Funktionen von C++0x, die in GCC 4.4 und späteren Versionen zu finden sind. (Sie lässt sich auch mit Microsoft Visual C++ 10 unter Windows kompilieren, das viele C++0x-Funktionen unterstützt.)

Wir möchten eine iPhone/iPad-Version veröffentlichen, daher müssen wir sie von Linux/Windows auf das iPhone portieren. Wir haben ähnliche Programme mit sehr wenig Aufwand portiert - ein paar Objective C-Dateien hinzugefügt und fertig! - jedoch haben wir hier aufgrund der verwendeten C++0x-Funktionen ein Problem. Xcode unter OS X verwendet GCC 4.2.1 (von 2007), das die C++0x-Unterstützung von GCC vorwegnimmt. Es scheint ein großer Rückschritt zu sein, all diesen schönen C++ 0x-Code neu zu schreiben, um keine C++0x-Funktionen zu verwenden, und wir möchten wirklich keine zurückportierte Codebasis pflegen, wenn der Weg zu C++0x klar ist.

Gibt es einen Weg, GCC 4.5 (oder 4.6, aus dem SVN) zu verwenden, um das iPhone und den iPhone-Simulator als Ziel zu setzen? Wenn ja, wie? Vorzugsweise innerhalb von Xcode, da die Klick-und-Ausführen/Klick-und-Debuggen-Funktion sehr nützlich ist. Es wäre großartig, einfach "GCC 4.6" in das Feld "C/C++-Compiler-Version" in Xcode eingeben zu können und alles würde funktionieren.

(Übrigens unterstützt die aktuellste Version von Clang - Stand gestern! - einige C++0x-Funktionen, unterstützt jedoch noch keine Lambda-Ausdrücke, sodass sie für uns vorerst wahrscheinlich nicht infrage kommt.)

5voto

Zack Punkte 69

Vom Kopf her würde ich sagen, dass es wahrscheinlich keinen sehr sauberen oder einfachen Weg gibt, dies zu tun, bis Apple es offiziell unterstützt. Du weißt wahrscheinlich bereits, dass Xcode eine ältere Version von GCC verwendet, weil Apple umfangreiche Änderungen am GNU-Toolchain vornimmt und ihre Version unter der APSL veröffentlicht (die mit der GPL inkompatibel ist). Für den größten Teil kannst du also ihre Version von GCC als kompletten Fork betrachten. Ich bin auf dieses Problem gestoßen, als ich versuchte, die Apple-Version des Toolchains auf Linux zu portieren. Ich hatte teilweise Erfolg, aber es ist keine kleine Aufgabe...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X