2008-11-08 2 views
7

Ich habe eine große bestehende C++ Codebasis. In der Regel bearbeiten die Benutzer der Codebasis die Quelle mit gvim, aber wir möchten mit den nützlichen IDE-Funktionen in Eclipse beginnen. Die Codebase hat eine umfangreiche Verzeichnishierarchie, aber die Quelldateien verwenden Directions ohne Pfade, die auf Voodoo basieren, das wir in unserem Build-Prozess verwenden. Wenn ich die Quelle mit meinem Projekt in Eclipse verknüpfe, beschwert sich der Indexer, dass er keine Header-Dateien finden kann (weil wir keine Pfade in unseren Includes angeben). Wenn ich manuell die Verzeichnisse aus dem Arbeitsbereich zum Include-Pfad hinzufüge Alles funktioniert wunderbar, aber das manuelle Hinzufügen von Hunderten von Verzeichnissen ist nicht möglich. Wäre es eine einfache Methode, Eclipse zu sagen, dass es irgendwo im Projekt nach den Include-Dateien suchen soll, ohne sie einzeln hinzufügen zu müssen? Wenn nicht, kann dann jemand einen guten Startpunkt vorschlagen, zB welche Klassen zu erweitern sind, um ein Plugin zu schreiben, um das Projekt bei der Erstellung/Änderung einfach zu scannen und alle Verzeichnisse dem Include-Pfad hinzuzufügen?Durchsuchen Sie das gesamte Projekt für Includes in Eclipse CDT

Antwort

2

hat diese Funktion bereits in dem aktuellen CDT Entwicklungsstrom umgesetzt worden und wird in CDT 6.0 zur Verfügung, die zusammen mit Eclipse 3.5 im Juni 2009. Im Wesentlichen

freigegeben werden, wenn Sie eine # include und die Header Datei existiert irgendwo in Ihrem Projekt, dann wird CDT es finden können, ohne manuell Include-Pfade einzurichten.

Wenn Sie die Funktion jetzt benötigen, können Sie den neuesten CDT-Entwicklungs-Build herunterladen und installieren.

Eclipse Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=21356
Neueste CDT 6.0 Builds: http://download.eclipse.org/tools/cdt/builds/6.0.0/index.html

5

Die Art und Weise, dass CDT schafft Wege zu bauen, indem man die .cdtbuild XML-Datei in der Basis Ihrer Projekte-Verzeichnis (es könnte ein anderer Name auf Windows sein ... nicht sicher)

dies in Sie sollten So etwas wie

<option id="gnu.c.compiler.option.include.paths....> 
<listoptionValue builtIn="false" value="&quot;${workspace_loc:/some/path}$quot;" /> 
<listOptionValue ... /> 

... 
</option> 

Hier werden alle Buildpfade platziert, die Sie in der GUI konfigurieren. Es sollte ziemlich einfach sein, alle Verzeichnisse mit einem einfachen Perl-Skript hinzuzufügen, um das Projekt zu führen und alle listOptionValue-Einträge zu generieren.

Dies ist offensichtlich nicht die ideale Methode. Aber ich bin neugierig, auf welches Build-System Sie migrieren, wenn es make-basiert ist, sollten Sie in der Lage sein, eclipse zu bekommen, um Ihre make-Dateien zu verwenden.

0

Je nachdem, wie viel Voodoo Sie in Ihrem Build-Prozess verwenden, kann Eclipse Ihre Quelldateien möglicherweise nicht korrekt parsen, besonders wenn Sie Header mit ähnlichen Namen für verschiedene Quelldateien haben. Wenn Sie Eclipse wirklich voll ausnutzen wollen, müssen Sie sicherstellen, dass Sie den Parser nicht verwirren. Persönlich würde ich empfehlen, einen einfachen Layout- und Build-Prozess zu haben.

Wie für die Frage zur Hand, Hinzufügen der Verzeichnisse eins nach dem anderen ist ziemlich Ihre beste Wette.

1

Von den this Eclipse CDT FAQ entry lesen, es klingt wie Eclipse automatisch eine Liste der Include-Verzeichnisse erzeugen können, wenn Sie Ihren Build aus Eclipse starten und wenn Ihr Build gibt die gcc/g++ Befehle vor gcc/g++ tatsächlich beginnen. Sie können ändern, wie Eclipse einen Build startet, indem Sie unter Projekteigenschaften gehen und dann die Kategorie C/C++ Build auswählen und auf der rechten Seite des Dialogfelds nach der Option Build Command suchen.

+0

Ich habe gerade dies getestet - es funktioniert auf die unbequemste Art und Weise. Es analysiert das Build-Protokoll und fügt Include-Pfade von g ++ -I/some/path-Zeilen in "system includes" ein. Verwenden Sie die .cproject-Datei, und fügen Sie sie selbst hinzu, um Versionen in VC zu ermöglichen. Auto-Discovery nicht. – Evgeny