it-swarm.com.de

Wie kann ich Eclipse dazu bringen, einen gesamten C/C++ - Quellbaum zu indizieren, der mehrere "Projekte erstellen" enthält?

Ich habe Probleme, Eclipse dazu zu bringen, meinen Quellcode zu indizieren. Im Moment verwende ich Eclipse Helios unter Windows XP.

Ich habe ein Verzeichnis namens src. Darin habe ich eine Reihe von dirs, etwa so:

 src 
 -include (allgemeine Header) 
 -lib 
 -libIO (Quellcode für diese Bibliothek) 
 -libGUI (Quellcode für diese Bibliothek) 
 -pgms 
 -pgm1 (Quellcode und Header für dieses PGM) 
 -pgm2 (Quellcode und Header für dieses Programm) 

Jedes Blatt hat ein eigenes Makefile. Es gibt kein Makefile der obersten Ebene in src. pgm1 kann und enthält Dateien aus include und lib/libIO und lib/libGUI.

Grundsätzlich möchte ich, dass Eclipse mein gesamtes SRC-Verzeichnis indiziert, ohne dass für jedes Blatt in meinem Baum ein C/C++ - Projekt erstellt werden muss. Ich kann keinen Weg finden, dies zu erreichen.

Hier sind meine Symptome; Was ich versuche zu lösen:

Beim Bearbeiten der Quelle im Verzeichnis pgm1 verweist es auf Funktionen, die in meinen Include-Header-Dateien deklariert und in Quelldateien in lib/libIO definiert sind. 

Wenn ich jedoch F3 drücke, um zur Deklaration einer Funktion zu gelangen, sagt Eclipse "Symbol 'X' konnte nicht im Index gefunden werden". Ich kann nicht scheinen, dass Eclipse entweder die Header-Deklaration oder die Quellendefinition für die Methode unter meinem Cursor findet (wie das Java-Modul dies perfekt tut). Ist das möglich?

24
Jay

Ich konnte dieses Problem dank der Kommentare hier lösen. Am Ende habe ich mein Projekt neu erstellt. Ich habe die Import-Methode verwendet, um ein Projekt von CVS herunterzuladen, und sagte ihm, dass er den Assistenten für neue Projekte verwenden soll. Als ich das Dialogfeld Neues Projekt erhielt, sagte ich, es sei ein C++ - Projekt, und die Indizierung funktioniert jetzt einwandfrei.

Ich wünsche mir immer noch, dass ich Dateien indizieren könnte, ohne einen bestimmten Projekttyp daran anhängen zu müssen, aber zumindest habe ich eine Antwort gefunden. 

Danke für die Hilfe alle.

4
Jay

Ich hatte genau dasselbe Problem wie OP, aber aus irgendeinem Grund waren die Menüs in Eclipse (Helios Service Release 2) nicht "Gehe zu Eigenschaften -> C/C++ - Allgemein -> Pfade und Symbole -> Quellspeicherort". 

Ich habe das Problem behoben:

  • klicken Sie in der C/C++ - Ansicht mit der rechten Maustaste auf den Namen des obersten Projekts.
  • wählen Sie im Menü New-> C++ Project aus.
  • wählen Sie im daraufhin angezeigten Fenster Konvertieren in und dann C++ - Projekt aus.
  • klicken Sie auf OK, um das Fenster zu schließen.

Eclipse beginnt sofort mit der Indizierung. Abhängig von der Größe des Quellbaums kann es eine Weile dauern, aber die Indizierung wird abschließend ausgeführt.

27
MHD

Ich war in einer ähnlichen Situation. Ich habe es so gelöst: Rechtsklick auf das Projekt im Projekt View-->select Index-->rebuild.

10
Somabho

Beenden Sie Eclipse. Gehen Sie im Arbeitsbereich zu ".metadata/.plugins/org.Eclipse.cdt.core" und löschen Sie alles darin. 

4
CppChase

klicken Sie im Projekt-Explorer mit der rechten Maustaste auf das Projekt, das Sie neu indizieren möchten, wählen Sie dann den Index aus und wählen Sie dann die gewünschte Aktion aus

3
user3727512

Die Indizierung von Dateien und Variablen unter verschiedenen Flags ist immer kompliziert, wenn wir ein großes Projekt, viele Dateien und vor allem viele verschiedene Build-Optionen haben. Ich ziehe es vor, mit der Indexer-Option herumzuspielen, um mir dabei zu helfen, den gesamten Code zu durchsuchen. Sie finden ihn unter: Projekteigenschaften> C/C++ General/Indexer.

Sie können "Projektspezifische Einstellungen aktivieren" wählen.

Dann müssen Sie die gewünschten Optionen für Ihr Projekt auswählen. Für einen bestimmten Build können Sie "Aktive Build-Konfiguration verwenden" wählen, damit nur die Dateien und MACROS berücksichtigt werden, die vom Build-Skript verwendet werden. .Oder Indizieren Sie alle Quelldateien im gesamten Projekt.

2

Ich benutze Eclipse Neon 3, hier ist die Lösung, die für mich funktioniert hat:

  • gehe zu Datei
  • Neu 
  • Konvertieren Sie in ein C/C++ - Autotools-Projekt.

Das Beenden der Indizierung kann einige Zeit dauern. Dies hängt von Ihrer Projektgröße ab.

2
basslo

Ich habe Probleme mit dem Indexer von Eclipse Luna erlebt, als in der Klassendeklaration eine ungelöste Friend-Deklaration vorlag. Es scheint, als würde der Indexer den Rest dieser Klasse überspringen, und alle Verweise darauf wurden vom Indexer als nicht gelöst angezeigt.

Lösung: Die nicht aufgelöste Freundschaftsdeklaration wurde entfernt (in meinem Fall war der alte Code nicht mehr erforderlich).

1
Andreas Lindell

Bitte versuchen Sie folgendes (mein Projekt ist anders eingerichtet, daher bin ich nicht sicher, ob dies für Sie funktioniert).

Gehen Sie zu Eigenschaften -> C/C++ - Allgemein -> Pfade und Symbole -> Quellspeicherort.

Sehen Sie dort Ihren Quellordner?

Ich beobachte dieses Verhalten: Wenn ich einen Quellordner hinzufüge und ihn dann vom Build ausschließe, wird er aus der obigen Liste entfernt. Danach wird der Ordner nicht mehr indiziert. Durch das erneute Hinzufügen zu "Source Location" wird das Problem gelöst: Der Ordner ist jetzt indiziert. bleibt vom Build ausgeschlossen (wie beabsichtigt); ist unter den Quellorten sichtbar.

Ich glaube, es ist ein Fehler - der Ausschluss eines Quellordners von build sollte ihn nicht aus der Liste der Quellorte entfernen.

0
user443854

In Coocox IDE (Eclipse + gcc) wird das Problem gelöst, indem Sie aus dem Dateimenü Bearbeiten> Voreinstellungen> C/C++/Indexer gehen R).

0
jim

Ich benutze

Eclipse IDE für C/C++ Linux-Entwickler

Version: Helios Service Release 2Build id: 20110218-0911

Ich folgte den obigen Vorschlägen und zusätzlich musste ich alle referenzierten Projekte (mit im Arbeitsbereich) mit Projekteigenschaften-> Projektreferenzen markieren

0
Amir Pauker

Folgendes hat für mich in Eclipse Neon funktioniert: Neues Projekt -> C/C++ -> Makefile-Projekt mit vorhandenem Code -> Weiter. Navigieren Sie dann zum Code und schließen Sie die Projekterstellung ab. Die Indizierung startet automatisch.

0
yep

Wenn das Projekt bereits nach C/C++ konvertiert wurde und der Index immer noch nicht funktioniert, können Sie mit der rechten Maustaste auf das Projekt klicken und Index erstellen und neu erstellen. Das Projekt beginnt sofort mit der Indizierung. 

0
hegu2212