Comment activer C++11 dans Eclipse Juno/Kepler / Luna CDT?

EDIT: il s'avère que ce n'est vraiment pas spécifique à Eclipse Kepler. J'ai dû utiliser le même procédé pour Eclipse Juno. Le problème est qu'il semble y avoir des étapes manquantes dans d'autres Billets répondant à cette même question.

J'utilise Eclipse Kepler pour C++ et j'essaye d'utiliser C++11 et d'obtenir des erreurs. Quand je compileje reçois l'erreur

erreur: la gamme de base-pour les boucles ne sont pas autorisés en C++98 mode

j'ai suivi le instructions de la poste

Eclipse CDT C++11/C++0x support

et la solution donnée pour Eclipse Juno ne fonctionne pas.

différents commentaires ont suggéré de redémarrer eclipse et le nettoyage et la reconstruction. Qui n'a pas fait une différence.

86

8 réponses

il y a deux choses que vous devez faire, d'abord vous devez configurer votre compilateur, puis vous devez configurer le processeur de langue de CDT. Puisque vous n'avez pas mentionné le compilateur que vous utilisez, je supposerai que C'est GCC, mais les étapes seront similaires pour les autres compilateurs. (Notez que vous avez besoin d'un compilateur qui supporte C++11, Bien sûr.)

configurer le compilateur est assez simple:

  1. faites un clic droit sur votre projet et cliquez sur Propriétés
  2. Sous C/C++ Build cliquez sur Paramètres
  3. sous GCC C++ Compiler, cliquez Divers
  4. dans la boîte autres drapeaux, ajoute"- std=c++11 " à la liste des jetons.
  5. cliquez sur Appliquer et OK

À ce stade, vous devriez être en mesure de reconstruire votre projet et de le faire fonctionner. Mais CDT peut quand même afficher des erreurs pour C++11 includes. Voici comment vous pouvez résoudre cela:

  1. faites un clic droit sur votre projet et cliquez sur Propriétés
  2. sous C/C++ Général cliquez sur" préprocesseur Include Paths, Macros "
  3. sélectionnez L'onglet Fournisseurs
  4. il devrait y avoir un élément dans la liste qui dit quelque chose comme"GCC construit dans les paramètres du compilateur". Sélectionnez cette entrée.
  5. Décochez la case "Utiliser le fournisseur à l'échelle mondiale..."option
  6. sous la liste il y a une boîte qui dit " commande pour obtenir le compilateur cifications."Ajoute" - std=C++0x " à ceci.
  7. déplacez le fournisseur" GCC intégré dans les paramètres du compilateur "en haut de la liste en utilisant le bouton" Déplacer vers le haut " sur la droite.
  8. cliquez sur Appliquer, puis OK.
  9. de retour dans votre espace de travail Eclipse, sélectionnez le Menu Projet, Index C/C++, et cliquez sur" re-resolve unresolved includes."
179
répondu MrEricSir 2014-09-10 20:25:47

C++11 support in Eclipse Kepler Service Release 1 (Build id: 20130919-0819)

dans la dernière version de Eclipse Kepler SR1 vous n'avez qu'à ajouter - std=C++11

  1. faites un clic droit sur votre projet et cliquez sur propriétés
  2. Naviguer vers C/C++ Général et Préprocesseur Inclure des Chemins d'accès, les Macros, etc.
  3. , Sélectionnez Fournisseurs onglet
  4. Ajouter -std=c++11 à Commande pour obtenir compilateur specs:
  5. appliquer les modifications, L'Index doit être généré automatiquement.

la "commande pour obtenir les spécifications du compilateur: " - la ligne devrait ressembler à:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
25
répondu MeJ 2013-11-20 16:27:30

à partir de CDT 8.3 ( disponible sous forme de mise à jour de Kepler ), il existe une nouvelle option dialecte dans les paramètres de construction:

http://wiki.eclipse.org/CDT/User/NewIn83#Build

13
répondu Tobu 2014-03-18 13:05:29

J'utilise Eclipse Kepler et pour le corriger j'ai fait ceci:

1-clic droit sur le projet > > Proprietes > > C / C++ Build:: Settings

2 - est Allé à GCC Compilateur G++ > > Divers >> d'Autres Drapeaux

 i then added -std=c++11 
 hit apply and ok

Qui a résolu mon problème!

j'espère que ça a aidé!

6
répondu LandKingdom 2013-12-27 00:14:24

exécutant eclipse indigo et cdt 8.0.2 ici. J'ai suivi tous les guides, mais il était encore nécessaire de définir le préprocesseur défini à la main pour trouver des choses comme std::unique_ptr. Le fichier include "memory" vérifie cela. Mettez _ _ cplusplus à 201103L sur L'onglet" Symboles "sous" chemins et symboles "dans" C++ général " dans les propriétés du projet.

4
répondu David Karla 2014-04-07 18:05:17

Ajouter un drapeau de dialecte "- std=C++11" aux propriétés du projet - > C / C++ Build - > Settings - > Tool settings (GCC C++ Compiler - > Dialect) a résolu mon problème dans Eclipse Kepler, en dehors des paramètres mentionnés ci-dessus.

2
répondu mluthra 2016-05-02 23:31:49

J'utilise Eclipse Luna et il n'y a pas de" paramètres D'outils " sous C/C++ Build -> Settings. I DID add-std=c++11 à la ligne de commande specs du compilateur sous "C / C++ General -> Preprocessor Includes -> Providers" comme suggéré. Mais cela ne satisfaisait toujours pas la capacité de mon indexeur à résoudre emplace().

donc j'ai regardé dans le fichier d'en-tête pour et j'ai trouvé que les fonctions d'emplace dépendent de __cplusplus >= 201103L. Alors j'ai juste ajouté symbole de préprocesseur "__cplusplus" et lui a donné la valeur 201103.

un peu hackish mais l'indexeur est heureux. (Et les makefiles définissent mes drapeaux de construction, pas le projet eclipse)

1
répondu Miles F. Bintz II 2016-07-04 17:41:24

la solution fournie par MrEricSir ne fonctionne qu'après avoir installé le dernier CDT D'oxygène Eclipse. Ça ne marche pas avec Mars CDT.

0
répondu user164969 2017-11-06 23:17:40