web-dev-qa-db-fra.com

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

EDIT: Il s’avère que cela n’est pas spécifique à Eclipse Kepler. J'ai dû utiliser le même processus pour Eclipse Juno. Le problème était qu’il semblait manquer des étapes dans d’autres messages qui répondaient à la même question.

J'utilise Eclipse Kepler pour C++ et j'essaie d'utiliser C++ 11 et j'obtiens des erreurs. Quand je compile j'ai l'erreur

erreur: les boucles basées sur la plage ne sont pas autorisées en mode C++ 98

J'ai suivi les instructions du post

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

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

Différents commentaires ont suggéré de redémarrer Eclipse, ainsi que de nettoyer et de reconstruire. Cela n'a pas fait de différence.

86
user327301

Il y a deux choses que vous devez faire, vous devez d'abord configurer votre compilateur, puis le processeur de langage de CDT. Puisque vous n'avez pas mentionné le compilateur que vous utilisez, je suppose que c'est GCC, mais les étapes seront similaires pour les autres compilateurs. (Notez que vous avez besoin d’un compilateur prenant en charge C++ 11, bien sûr.)

L'installation du 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 Compilateur GCC C++, cliquez sur Divers.
  4. Dans la zone Autres indicateurs, ajoutez "-std = c ++ 11" à la liste des jetons.
  5. Cliquez sur Appliquer et sur OK

À ce stade, vous devriez pouvoir reconstruire votre projet et le faire fonctionner. Mais CDT peut toujours afficher des erreurs pour C++ 11. Voici comment vous pouvez résoudre ce problème:

  1. Faites un clic droit sur votre projet et cliquez sur Propriétés
  2. Sous Général C/C++, cliquez sur "Chemins d'inclusion de préprocesseur, Macros".
  3. Sélectionnez l'onglet Fournisseurs
  4. Il devrait y avoir un élément dans la liste qui dit quelque chose comme "Paramètres du compilateur intégré GCC". Sélectionnez cette entrée.
  5. Décocher l'option "Utiliser fournisseur global ..."
  6. Sous la liste, il y a une boîte qui dit "Commande pour obtenir les spécifications du compilateur". Ajoutez "-std = c ++ 0x" à cela.
  7. Déplacez le fournisseur "Paramètres du compilateur intégré GCC" en haut de la liste à l'aide du bouton "Déplacer vers le haut" sur la droite.
  8. Cliquez sur Appliquer puis sur OK.
  9. De retour dans votre espace de travail Eclipse, sélectionnez le menu Projet, Index C/C++, puis cliquez sur "Re-résoudre les inclusions non résolues".
185
MrEricSir

Prise en charge de C++ 11 dans Eclipse Kepler Service Release 1 (ID de la version: 20130919-0819)

Dans la dernière version Eclipse Kepler SR1, il suffit d’ajouter - std = c ++ 11

  1. Faites un clic droit sur votre projet et cliquez sur Propriétés
  2. Accédez à Général C/C++ et Chemins d'inclusion de préprocesseur, macros, etc.
  3. Sélectionnez l'onglet Fournisseurs
  4. Ajoutez - std = c ++ 11 à Commande permettant d’obtenir les spécifications du compilateur:
  5. Appliquer les modifications, l'index doit être généré automatiquement.

La ligne "pour obtenir les spécifications du compilateur:" - devrait ressembler à ceci:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
25
MeJ

A partir de CDT 8.3 ( disponible sous la forme d'une mise à jour Kepler ), une nouvelle option de dialecte est présente dans les paramètres de construction:

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

13
Tobu

J'utilise Eclipse Kepler et pour le réparer, j'ai fait ceci:

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

2 - Je suis allé au compilateur GCC G ++ >> Divers >> Autres drapeaux

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

Cela a résolu mon problème!

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

6
LandKingdom

Lancer Eclipse Indigo et cdt 8.0.2 ici. J'ai suivi tous les guides, mais il était toujours nécessaire de définir manuellement le préprocesseur pour trouver des éléments comme std :: unique_ptr. Le fichier d'inclusion "mémoire" vérifie cela. Définissez __cplusplus sur 201103L dans l'onglet "Symboles" sous "Chemins d'accès et symboles" dans "C++ Général" dans les propriétés du projet.

4
David Karla

L'ajout de l'indicateur de dialecte "-std = c ++ 11" dans les propriétés du projet-> Construction C/C++ -> Paramètres -> Paramètres de l'outil (Compilateur GCC C++ -> Dialecte) a résolu mon problème dans Eclipse Kepler, à l'exception des paramètres indiqués ci-dessus.

2
mluthra

J'utilise Eclipse Luna et il n'y a pas de "Paramètres de l'outil" sous C/C++ Build -> Settings. I A FAIT ajouter -std = c ++ 11 à la ligne de commande de spécification du compilateur sous "C/C++ Général -> Le préprocesseur inclut -> Fournisseurs" comme suggéré. Mais cela n'a toujours pas satisfait la capacité de mon indexeur à résoudre emplace ().

J'ai donc regardé dans le fichier d'en-tête et découvert que les fonctions de l'emploi dépendent de __cplusplus> = 201103L. J'ai donc ajouté le symbole de préprocesseur "__cplusplus" et lui ai attribué la valeur 201103.

Un peu hack, mais l'indexeur est content. (Et les makefiles définissent mes drapeaux de construction, pas le projet Eclipse)

1
Miles F. Bintz II

La solution fournie par MrEricSir ne fonctionne qu'après avoir installé le dernier CDT Eclipse Oxygen. Cela ne fonctionne pas pour moi avec Mars CDT.

0
StndFish