web-dev-qa-db-fra.com

Puis-je utiliser C ++ 11 avec Xcode?

J'envisage d'utiliser certaines fonctionnalités de C++ 11 (comme auto par exemple) dans certains projets multiplates-formes (Windows + Mac). Sous Windows, Visual Studio prend en charge des parties de la future norme C++ 11 qui me permettraient de simplifier des parties de la base de code. Il est donc naturellement intéressant de commencer à utiliser ces fonctionnalités.

Mais pour autant que je sache, la version actuelle de XCode (3.2.4 + GCC 4.2) ne prend en charge aucune fonctionnalité C++ 11. Puis-je mettre à niveau la version GCC ou la version CLang d'une manière ou d'une autre? Ou devrais-je simplement me mordre la langue et attendre Apple) pour emballer une nouvelle version dans le futur?

85
villintehaspam

Xcode 4.2 avait finalement ajouté le support de C++ 0X:

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

  2. Dans la section "Options de construction", définissez le compilateur sur "Compilateur Apple LLVM 3.0".

  3. Faites défiler la section "Langage Apple LLVM Compiler 3.0 - Langage" et définissez les options "Dialecte de langage C++" sur "C++ 0X" et "Bibliothèque standard C++" sur "libc ++".

Le std :: move (), le constructeur de move et la référence R-Value sont connus pour fonctionner comme prévu, et je teste les std :: thread et std :: atomic.

74
RichardLiu

======= Mise à jour 2012: =======

Commencez avec Clang - De nombreuses fonctionnalités C++ 11 sont maintenant disponibles dans Clang. Il est inclus avec Xcode.

======= Réponse originale de janvier 2011: =======

le compilateur d'Intel peut être le moyen le plus propre d'aller à ce moment. http://software.intel.com/en-us/articles/intel-composer-xe/

clang est prometteur, mais pas particulièrement stable, ni doté de 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 cela est difficile à gérer ... à moins que vous ne mettiez tout en œuvre pour créer un outil adaptateur.

8
justin

Xcode utilise les compilateurs GCC ou Clang C++. Toutes les fonctionnalités supportées par ces compilateurs sont un jeu équitable. La page de compatibilité C++ de GCC est ici et la page de compatibilité Clang C++ est ici .

1
Barry Wark

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

les macros lambdas et variadic ne semblent pas fonctionner sous LLVM pour le moment.

0
centaurian_slug