85 votes

Puis-je utiliser C++11 avec Xcode ?

J'envisage l'utilisation de certaines fonctionnalités de C++11 (comme auto par exemple) dans certains projets multiplateformes (Windows+Mac). Sous Windows, Visual Studio prend en charge certaines parties de la future norme C++11 qui me permettraient de simplifier certaines parties de la base de code, et je serais donc naturellement intéressé par l'utilisation de ces fonctionnalités.

Mais pour autant que je sache, la version actuelle de XCode (3.2.4 + GCC 4.2) ne prend pas du tout en charge 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 dois-je me mordre la langue et attendre qu'Apple mette au point une nouvelle version à l'avenir ?

74voto

RichardLiu Points 878

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

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

  2. Dans la section "Build Options", définissez le compilateur à "Apple LLVM compiler 3.0".

  3. Faites défiler vers le bas la section "Apple LLVM Compiler 3.0 - Language" et réglez "C++ Language Dialect" sur "C++0X" et "C++ Standard Library" sur "libc++".

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

8voto

justin Points 72871

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

Commencez par Clang - De nombreuses fonctionnalités de C++11 sont désormais disponibles dans Clang. Il est inclus dans Xcode.

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

le compilateur d'intel est peut-être la solution la plus propre pour le moment. http://software.intel.com/en-us/articles/intel-composer-xe/

clang est prometteur, mais n'est pas particulièrement stable ou doté des fonctionnalités de 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 vous lanciez à fond dans la création d'un outil adaptateur.

1voto

Barry Wark Points 73462

Xcode utilise les compilateurs C++ GCC ou Clang. Toutes les fonctionnalités supportées par ces compilateurs sont à prendre en compte. La page de compatibilité C++ de GCC est ici et la page de compatibilité Clang C++ est ici .

0voto

centaurian_slug Points 346

J'ai constaté que les fonctions auto, decltype(), range based "for ( :)" fonctionnent dans un projet multiplateforme (LLVM pour MacOSX, iOS, gcc/linux, MSVC 10/Windows).

Malheureusement, les lambdas et les macros variadiques ne semblent pas encore fonctionner sous LLVM.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X