J'ai configuré un projet C++ 11 dans Eclipse CDT pour utiliser gcc-4.7. Ce n'est pas le compilateur par défaut sur mon système, qui ne supporte pas C++ 11. Pour que la compilation fonctionne, je dois passer l'indicateur -std=c++11
et inclure également le chemin d'en-tête suivant: /usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2
Chaque fois que j'utilise des types de conteneur C++ 11 tels que std::unordered_set
ou std::unordered_map
, l'indexeur CDT se plaint: Symbol unordered_set could not be resolved
. Comment puis-je dire à l'indexeur de résoudre ces symboles correctement?
Voici comment j'ai configuré mon indexeur:
Autant que je sache les paramètres, l'indexeur est censé utiliser les paramètres du compilateur de la configuration de construction actuellement active. La compilation fonctionne bien, alors pourquoi l’indexation non plus?
Comme décrit dans ce post sur le forum:
http://www.Eclipse.org/forums/index.php/mv/msg/282618/
__GXX_EXPERIMENTAL_CXX0X__
dans "Nom" et Laissez "Valeur" vide. Cliquez sur Appliquer, faites ce que vous avez demandé, puis cliquez sur OK.La configuration de **__GXX_EXPERIMENTAL_CXX0X__**
ne m'aide pas dans mon cas (juillet 2014, Eclipse Kepler 20130919, Ubuntu 12.04).
Pour corriger la coloration syntaxique C++ 11, allez à:
Propriétés du projet -> C/C++ Général -> Chemins et symboles -> Symboles -> GNU C++
et écrasez le symbole (c’est-à-dire ajoutez un nouveau symbole):
__cplusplus
avec valeur
201103L
MISE À JOUR: Si vous utilisez une version plus récente d'Eclispe (à partir de 2016) et que vous rencontrez toujours le même problème, essayez value (comme indiqué par jose.diego):
201402L
Assurez-vous que l'indexeur est activé dans les paramètres du projet ( Général C/C++ -> Indexeur )
Puis réindexez ( Projet -> Index C/C++ -> Reconstruire )
si le problème persiste, réindexez à nouveau. Cela devrait fonctionner maintenant.
J'ai récemment résolu ce problème après avoir eu la chance de googler.
Cliquez sur votre projet et faites un clic droit-> Propriétés
Sélectionnez "C/C++ Général -> Chemins d'inclusion de processeurs, macros, etc."
Sélectionnez l'onglet "Fournisseurs"
Désélectionnez tout sauf "Entrées des paramètres utilisateur CDT" et "Paramètres du compilateur intégré CDT GCC"
Cliquez sur "Paramètres du compilateur intégré CDT GCC"
Désélectionnez "Utiliser le fournisseur global partagé entre les projets"
Edit la case en bas intitulée "Commande pour obtenir les spécifications du compilateur"
Insère dans la commande -std = c ++ 11 pour ressembler à ceci:
${COMMAND} -std=c++11 -E -P -v -dD "${INPUTS}"
Cliquez sur Appliquer et d'accord.
Cela a fonctionné pour moi. Vous devrez probablement réindexer le projet.
Ou aller à:
C/C++ Build-> Options de découverte-> Compilateur GCC C++
ajoutez vos drapeaux aux arguments d'appel du compilateur. comme -std = c ++ 11 -m32
Effacer les entrées découvertes maintenant: cliquez sur Effacer
reconstruire le projet
Après cela, TOUS les symboles seront mis à jour avec les valeurs correctes et l'indexeur devrait fonctionner comme prévu.
La solution de rechange pour moi, avec un projet utilisant un générateur externe, consistait à définir le symbole:
__cplusplus
avec la valeur:
201403
dans le projet: Chemins et symboles -> Symboles/GNU C++.
Cela a fonctionné dans Eclipse Kepler CDT Version: 8.3.0.201402142303.
Voir ce guide :
Ce qui suit fonctionne dans Eclipse
C/C++
Oxygen
. 2 avec gcc-5.5.0
Eclipse Properties->C/C++ Build->Settings->GCC C++ Compiler->Dialect->Other dialect flags: -std=c++17
Ne rien ramasser dans la liste déroulante Language standard
.
La configuration suivante m'aide à résoudre le problème indiqué dans la question d'origine.
Environnement: Eclipse (version Oxygen.3a (4.7.3a)), Cygwin64 . Si vous avez une version différente de Cygwin, vous pouvez trouver des répertoires similaires comme suit.
Étape 1: Assurez-vous de disposer des deux répertoires suivants:
C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include\c++
Si vous ne voyez pas les deux répertoires ci-dessus, lancez votre programme d'installation Cygwin et installez gcc-core, gcc-g ++ et libgcc1.
Étape 2: Copiez le répertoire C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
dans C:\cygwin64\usr
si vous ne voyez pas les deux répertoires d'inclusion ci-dessus.
Étape 3: Accédez à Propriété du projet-> C/C++ Général-> Chemins et symboles Assurez-vous que les deux chemins suivants sont répertoriés.
C:\cygwin64\usr\include
C:\cygwin64\usr\include\c++
Étape 4: Propriété-> C/C++ Construire/Paramètres/Choisir l'analyseur Cygwin PE
Étape 5: Propriété -> Editeur de chaîne d'outils/de construction C/C++ Choisissez Cygwin GCC
Étape 6: Propriété -> Général C/C++/Indexeur Choisissez Activer l'indexeur
Étape 7: Projet-> Index C/C++-> Reconstruire
Maintenant, votre Eclipse devrait pouvoir voir les types C++ 11.