Jak sprawić, by łańcuch narzędzi GCC dla systemu Linux Eclipse CDT rozwiązał standardowe nagłówki bibliotek C ++?

12

W Ubuntu 12.04 LTS zainstalowałem wtyczkę Eclipse CDT i otworzyłem nowy projekt hello world, aby po prostu wszystko przetestować. Kiedy tworzyłem projekt, wybrałem jedyny zestaw narzędzi: „Linux GCC”

Jednak kiedy projekt jest tworzony, mówi o tym

#include<iostream>
#include<cstdlb>

są nierozwiązane. Zatem linie z couti endlnie może być używany i nie może znaleźć std.

using namespace std; powoduje również problemy.

Jak mogę #includerozpoznać moje dyrektywy dotyczące standardowych nagłówków bibliotek w celu obsługi kodu za pomocą stdprzestrzeni nazw?

Muhammad Khan
źródło
Czy te błędy utrzymują się nawet po wykonaniu Project> Build All?
Eliah Kagan
2
Może to głupie pytanie, ale czy stworzyłeś nowy projekt specjalnie jako projekt C ++, a nie projekt C?
bazz

Odpowiedzi:

4

Jeśli miałeś ten sam problem, co ja, podejrzewam, że Twój projekt się kompiluje, ale uzupełnianie / podświetlanie kodu kończy się niepowodzeniem? Właśnie znalazłem notatki, które mogą być przydatne. Oto co zrobiłem:

  • Projekt-> Właściwości

  • C / C ++ Ogólne

  • Ścieżki i symbole

  • wybierz odpowiedni język

  • Kliknij „Dodaj” i dodaj katalogi specyficzne dla wersji kompilatora

Do języka „GNU C ++” dodałem:

  /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

Do „GNU C” dodałem:

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

TBH, nie sądzę, aby wszystkie powyższe katalogi były faktycznie wymagane (prawdopodobnie możesz usunąć katalogi „bitów”), ale powyższa lista działała wtedy dla mnie.

Teraz używam Eclipse Indigo (wersja 3.7.2) z eclipse.org i automatycznie wyszukuje i dodaje poprawne katalogi dołączeń. Lista jest dla mnie inna:

/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

Oczywiście dodaj tylko katalogi dołączeń, które faktycznie istnieją w twoim systemie ;-)

jamesodhunt
źródło
Cóż, to nie działa dla mnie - chociaż jestem na 64-bitowej wersji Debian Stretch. Ale dostosowałem twoje sugestie do mojej platformy.
einpoklum,