web-dev-qa-db-fra.com

Comment faire en sorte que la chaîne d'outils GCC Linux de Eclipse CDT résolve les en-têtes de bibliothèque standard C ++?

Dans Ubuntu 12.04 LTS, j'ai installé le plug-in Eclipse CDT et ouvert le nouveau projet hello world pour tout tester. Lors de la création du projet, j'ai choisi l'unique chaîne d'outils: "Linux GCC"

Lorsque le projet est créé, cependant, il est indiqué que

#include<iostream>
#include<cstdlb>

sont non résolus. Ainsi, les lignes avec cout et endl ne peuvent pas être utilisées et il ne peut pas trouver std.

using namespace std; pose également des problèmes.

Comment obtenir mes directives #include pour les en-têtes de bibliothèque standard reconnus, afin de prendre en charge le code utilisant l'espace de noms std?

12
Muhammad Khan

Si vous aviez le même problème que moi, je soupçonne que votre projet est construit mais que la complétion/mise en évidence de code échoue? Je viens de trouver des notes qui pourraient être utiles. Voici ce que j'ai fait:

  • Projet-> Propriétés

  • C/C++ Général

  • Chemins et Symboles

  • sélectionnez la langue appropriée

  • Cliquez sur "Ajouter" et ajoutez les répertoires spécifiques à la version du compilateur.

Pour le langage 'GNU C++', j'ai ajouté:

  /usr/include
  /usr/include/c++/4.6
  /usr/include/c++/4.6/bits
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits
  /usr/include/c++/4.6/debug
  /usr/include/c++/4.6/i686-linux-gnu
  /usr/include/c++/4.6/i686-linux-gnu/bits

Pour "GNU C", j'ai ajouté:

  /usr/include
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits

TBH, je ne pense pas que tous les répertoires ci-dessus soient réellement nécessaires (vous pouvez probablement supprimer les répertoires "bits"), mais la liste ci-dessus a fonctionné pour moi à ce moment-là.

J'utilise maintenant Eclipse Indigo (version 3.7.2) d'Eclipse.org et il trouve et ajoute automatiquement les répertoires d'inclusion corrects. La liste est différente pour moi:

/usr/include/c++/4.6
/usr/include/c++/4.6/i686-linux-gnu
/usr/include/c++/4.6/backward
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

Clairement, ajoutez seulement les répertoires include qui existent réellement sur votre système ;-)

4
jamesodhunt