25 Stimmen

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

Ich habe Probleme, Eclipse dazu zu bringen, meinen Quellcode zu indizieren. Ich verwende Eclipse Helios auf Windows XP im Moment.

Ich habe ein Verzeichnis namens src. Innerhalb dieses Verzeichnisses habe ich eine Reihe von Verzeichnissen, etwa so:

 src
   -include (common headers)
   -lib
     -libIO (source code for this library)
     -libGUI  (source code for this library)
   -pgms
     -pgm1  (source code and headers for this pgm)
     -pgm2  (source code and headers for this pgm)

Jedes Blatt hat sein eigenes Makefile. Es gibt kein Makefile auf oberster Ebene in src. pgm1 kann und wird Dateien aus include und lib/libIO und lib/libGUI einbinden.

Im Grunde möchte ich, dass Eclipse mein gesamtes src-Verzeichnis indiziert, ohne dass ich für jedes Blatt in meinem Baum ein C/C++-Projekt einrichten muss. Ich kann keine Möglichkeit finden, dies zu erreichen.

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

Wenn ich den Quellcode im pgm1-Verzeichnis bearbeite, verweist er auf Funktionen, die in meinen Include-Verzeichnis-Header-Dateien deklariert und in Quelldateien in lib/libIO definiert sind.

Wenn ich jedoch F3 drücke, um zur Deklaration einer Funktion zu gelangen, meldet Eclipse "Could not find symbol 'X' in index". Ich kann Eclipse anscheinend nicht dazu bringen, entweder die Header-Deklaration oder die Quellendefinition für die Methode unter meinem Cursor zu finden (wie es das Java-Modul perfekt tut). Ist dies möglich?

2voto

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 Option Indexer herumzuspielen, um den gesamten Code zu durchsuchen. Sie finden sie unter: Projekteigenschaften>C/C++ Allgemein/Indexer.

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

Anschließend können Sie die gewünschten Optionen für Ihr Projekt auswählen. Für einen bestimmten Build können wir "Use active build configuration" wählen, so dass nur die Dateien und MACROS berücksichtigt werden, die vom Build-Skript verwendet werden. Oder alle Quelldateien des gesamten Projekts indizieren.

2voto

basslo Punkte 990

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

  • zu Datei
  • Neu
  • In C/C++ Autotools-Projekt konvertieren wählen Sie dann Ihr Projekt aus und beenden Sie es.

Es kann einige Zeit dauern, bis die Indizierung abgeschlossen ist, das hängt von der Größe Ihres Projekts ab.

1voto

Andreas Lindell Punkte 11

Ich habe Probleme mit dem Indexer von Eclipse Luna gehabt, wenn es eine nicht aufgelöste friend-Deklaration in der Klassendeklaration gab - es scheint, dass der Indexer dann den Rest der Klasse übersprungen hat und alle Verweise auf diese Klasse vom Indexer als nicht aufgelöst angezeigt wurden.

Lösung: Entfernen Sie die nicht aufgelöste Freundschaftserklärung (in meinem Fall war es veralteter Code, der nicht mehr benötigt wurde).

0voto

user443854 Punkte 6364

Bitte versuchen Sie Folgendes (mein Projekt ist anders aufgebaut, daher bin ich nicht sicher, ob es bei Ihnen funktioniert).

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

Sehen Sie dort Ihren Quellordner?

Ich beobachte dieses Verhalten: Wenn ich einen Quellordner hinzufüge und ihn dann von der Erstellung ausschließe, verschwindet er aus der obigen Liste. Danach wird der Ordner nicht mehr indiziert. Das erneute Hinzufügen zu "Quellort" löst das Problem: Der Ordner wird nun indiziert, bleibt von der Erstellung ausgeschlossen (wie beabsichtigt) und ist unter den Quellorten sichtbar.

Ich glaube, dass es sich um einen Fehler handelt - das Ausschließen eines Quellordners aus dem Build sollte ihn nicht aus der Liste der Quellorte entfernen.

0voto

jim Punkte 1

In Coocox IDE (Eclipse + gcc) wird das Problem gelöst, indem man im Menü Datei Edit > Preferences > C/C++ / Indexer > Build configuration for Indexer auf Active build configuration setzen und das Projekt neu erstellen (Strg R).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X