2011-01-01 4 views
81

Je considère l'utilisation de certaines fonctionnalités C++ 11 (comme auto par exemple) dans certains projets multiplates-formes (Windows + Mac). Sous Windows, Visual Studio prend en charge certaines parties de la norme C++ 11 à venir, ce qui me permettrait de simplifier certaines parties de la base de code, donc je serais naturellement intéressé à commencer à utiliser ces fonctionnalités. Mais pour autant que je sache, la version actuelle de XCode (3.2.4 + GCC 4.2) ne supporte pas du tout les fonctionnalités C++ 11. Puis-je mettre à jour la version GCC ou la version CLang d'une manière ou d'une autre? Ou devrais-je juste me mordre la langue et attendre Apple pour emballer une nouvelle version dans le futur?Puis-je utiliser C++ 11 avec Xcode?

+0

Regardez les réponses [ici] (http://stackoverflow.com/questions/2946887) et [ici] (http://stackoverflow.com/questions/3002395). –

+0

Pour un résultat plus positif, regardez: http://stackoverflow.com/questions/837992/update-gcc-on-osx –

+0

Excellent lien! –

Répondre

71

Xcode 4.2 a enfin ajouté le support pour C++ 0X:

  1. Dans l'écran des paramètres de construction du projet, activez les options "Tous".

  2. Dans la section "Options de génération", définissez le compilateur sur "Apple LLVM 3.0". Faites défiler jusqu'à la section "Apple LLVM Compiler 3.0 - Language" et définissez "C++ Language Dialect" sur "C++ 0X" et "C++ Standard Library" sur "libC++".

std :: move(), déplacer constructeur et référence R-Value sont connus pour fonctionner comme prévu, et je teste sur le std :: fil et std :: atomique.

+2

@ RichardLiu, qu'en est-il de l'option 'GNU ++ 0X' pour le' Dialecte C++ Language 'et l'option 'libstdC++' pour C++ Standard Bibliothèque'? Quand doivent-ils être utilisés? – Tin

+0

J'ai jeté un oeil dans '/ Developer/About \ Xcode.pdf' et oui, il est dit que C++ 11 est supporté, mais quand j'utilise' -std = gnu ++ 0x' il crache 'cc1plus: error : option de ligne de commande non reconnue "-std = 0x ++" '! Dois-je utiliser 'clang ++' à la place? – errordeveloper

+0

@errordeveloper, jusqu'à présent, je n'avais compilé que C++ 11 WITHIN Xcode IDE. Je ne sais pas comment activer C++ 11 en ligne de commande ou makefile. Pardon. – RichardLiu

1

Xcode utilise les compilateurs GCC ou Clang C++. Toutes les fonctionnalités prises en charge par ces compilateurs sont jeu équitable. La page de compatibilité C++ de GCC est here et la page de compatibilité Clang C++ est here. Mise à jour

+2

Le vrai mais le support de GCC s'arrête à 4.2 qui commence à devenir un peu long dans la dent – Mattia

8

======= 2012: =======

Commencez par Clang - Beaucoup 11 C++ fonctionnalités sont désormais disponibles en Clang. C'est inclus avec Xcode.

======= réponse originale de Jan 2011: =======

compilateur

intel peut être le plus propre chemin à parcourir à ce moment. http://software.intel.com/en-us/articles/intel-composer-xe/

clang est prometteur, mais pas particulièrement stable ou présenté par les fonctionnalités C++ 0x. C++ est encore très nouveau pour clang. Gcc: relativement mature, mais vous devrez écrire et maintenir vos plugins de compilation pour xcode.

vous pouvez également spécifier des scripts personnalisés, mais c'est une douleur à maintenir ... à moins que vous ne sortiez tout et créer un outil d'adaptateur.

0

J'ai trouvé auto, decltype(), basé sur la gamme "for (:)" travailler dans un projet multiplateforme (LLVM pour MacOSX, iOS, gcc/linux, MSVC 10/windows).

lambdas & les macros variadiques ne semblent pas encore fonctionner sous LLVM.

+1

MSVC 10 et 11 ne prennent pas en charge la gamme basée sur .Clang, d'autre part, * supporte * les modèles variadiques très bien. –