Ich erwäge die Verwendung einiger C ++ 11-Funktionen (wie auto
zum Beispiel) in einigen plattformübergreifenden Projekten (Windows + Mac). Unter Windows unterstützt Visual Studio Teile des kommenden C ++ 11-Standards, mit denen ich Teile der Codebasis vereinfachen kann, sodass ich natürlich daran interessiert wäre, diese Funktionen zu verwenden.
Soweit mir bekannt ist, unterstützt die aktuelle XCode-Version (3.2.4 + GCC 4.2) überhaupt keine C ++ 11-Funktionen. Kann ich die GCC-Version oder die CLang-Version irgendwie aktualisieren? Oder sollte ich mir einfach auf die Zunge beißen und warten, bis Apple irgendwann in der Zukunft eine neue Version veröffentlicht?
Antworten:
Xcode 4.2 hatte endlich Unterstützung für C ++ 0X hinzugefügt:
Aktivieren Sie im Bildschirm mit den Projekterstellungseinstellungen die Optionen "Alle".
Setzen Sie im Abschnitt "Build Options" den Compiler auf "Apple LLVM Compiler 3.0".
Scrollen Sie nach unten zum Abschnitt "Apple LLVM Compiler 3.0 - Sprache" und setzen Sie "C ++ Language Dialect" auf "C ++ 0X" und "C ++ Standard Library" auf "libc ++".
Es ist bekannt, dass std :: move (), move-Konstruktor und R-Value-Referenz wie erwartet funktionieren, und ich teste den std :: thread und std :: atomic.
quelle
GNU++0X
Option für dieC++ Language Dialect
und derlibstdc++
Option fürC++ Standard Library
? Wann sollen sie verwendet werden?/Developer/About\ Xcode.pdf
und ja, es heißt, dass C ++ 11 unterstützt wird, aber wenn ich es benutze-std=gnu++0x
, spuckt es auscc1plus: error: unrecognized command line option "-std=0x++"
! Soll ichclang++
stattdessen verwenden?clang++
beim Kompilieren verwendet, nichtg++
, weshalb die C ++ 11-Unterstützung fehlschlägt, wenn versucht wird, sieg++
über die Befehlszeile zu verwenden (da der alteg++
XCode dies nicht unterstützt). Nur zur Info.======= Update 2012: =======
Beginnen Sie mit Clang - Viele C ++ 11-Funktionen sind jetzt in Clang verfügbar. Es ist in Xcode enthalten.
======= Ursprüngliche Antwort vom Januar 2011: =======
Der Intel-Compiler ist derzeit möglicherweise der sauberste Weg. http://software.intel.com/en-us/articles/intel-composer-xe/
Clangs vielversprechende, aber nicht besonders stabile oder vorgestellte C ++ 0x-Funktionen. c ++ ist für clang noch sehr neu.
gcc: relativ ausgereift, aber Sie müssen Ihre Compiler-Plugins für xcode schreiben und pflegen.
Sie können auch benutzerdefinierte Skripte angeben, aber das ist schwierig zu warten ... es sei denn, Sie setzen alles daran, ein Adapter-Tool zu erstellen.
quelle
Xcode verwendet die GCC- oder Clang C ++ - Compiler. Alle von diesen Compilern unterstützten Funktionen sind Freiwild. Die C ++ - Kompatibilitätsseite von GCC ist hier und die Clang C ++ - Kompatibilitätsseite ist hier .
quelle
Ich habe festgestellt, dass auto, decltype (), bereichsbasiertes "for (:)" in einem plattformübergreifenden Projekt (LLVM für MacOSX, iOS, gcc / linux, MSVC 10 / windows) funktioniert.
Lambdas und verschiedene Makros scheinen unter LLVM leider noch nicht zu funktionieren.
quelle