2010-04-24 3 views

Antwort

13

Für Eclipse Indigo: Es gibt keine Möglichkeit, globale Include-Pfade und Bibliotheken zu definieren. Sie können sie jedoch von einem Projekt in ein anderes exportieren und importieren.

Zum Projekt> Eigenschaften> C/C++ Allgemein> Pfade und Symbole Klicken Sie dann Einstellungen exportieren ... die Include-Pfade zu speichern und/oder Symboldefinitionen in eine Datei. In Ihrem anderen Projekt können Sie dann importieren Einstellungen ...

+6

Funktioniert nicht :(Die Importfunktion scheint kaputt zu sein –

+0

Funktioniert perfekt (Eclipse Juno): Sie müssen nur die Einstellungen aus dem Projekt, das die meisten relevanten Includes enthält, in die XML-Datei (nennen wir es default_includes.xml) exportieren und irgendwo auf Ihrer Festplatte speichern fahren Sie, um Ihren anderen Projekten zu erlauben, es zu importieren, das ist es. –

+4

was ist mit Bibliotheken? –

7

Ich benutze oft die CPATH-Umgebungsvariable, um verschiedene Verzeichnisse über alle meine Projekte aufzunehmen. Sie finden es unter: c/C++ -> build-> environment. Achten Sie darauf, jeden Pfad mit einem ':' - Zeichen zu trennen (nicht mit einem ';' - Semikolon).

Sie können PATH auch verwenden, um statische Bibliotheken einzubinden. Für mich funktioniert es jedoch nur in Linux zuverlässig. In OSX ruiniert es.

Die Alternative wäre, diese Bibliotheken und Header zu den Standardsuchpfaden Ihrer Umgebung hinzuzufügen. Platz likes/usr/local/lib. Lesen Sie weiter, wo Ihr Linker standardmäßig sucht.

+0

Einstellung CPATH in eclipse ist nett, um Sachen für alle Projekte zu reparieren (wenn es wiederholbare Einstellungen ist). Ich kann einen anderen CPATH draußen haben der Sonnenfinsternis. – fchen

9

Ja, Sie können, in 2 Schritten, benutzerfreundlicher als der von parvus erwähnte. Beide sind in „Projekteigenschaften“ getan -> „C/C++ Allgemein“ -> „Wege und Symbole“:

  1. In einem bestehenden Projekt, in dem Sie bereits konfiguriert haben, die Pfade enthalten: Markieren Sie die Include-Pfade (in die Registerkarte "Includes"), die Sie in das neue Projekt kopieren möchten und wählen Sie "Exportieren". Beachten Sie, dass dies eine Markierung zu jeder Zeile hinzufügt.
  2. Im neu erstellten Projekt: Aktivieren Sie auf der Registerkarte "Referenzen" das Kontrollkästchen des gerade erwähnten Projekts, und wenn Sie zur Registerkarte "Includes" zurückkehren, sehen Sie, dass dort alle exportierten Pfade angezeigt werden.

Die Referenzierung der Bibliotheken funktioniert auf die gleiche Weise.

haben auch einen Blick auf:

+0

Ich bin nicht in der Lage gewesen, die Einbeziehung von Bibliotheken so zu machen, wie Sie es beschrieben haben, wenn Sie in Eclipse IDE für C/C++ - Entwickler arbeiten. Version: Mars Release (4.5.0). Build-ID: 20150621-1200. – Eduardo

1

ich in sie suchen schon vor langer Zeit. Einige Posts erwähnten eine Methode: Projekt> Eigenschaften> C/C++ Allgemein> Pfade und Symbole Dann klicken Sie auf Export Einstellungen .. Aber es funktioniert nur für die Aufnahme von Header-Dateien.

Um Bibliotheken und Bibliothekspfade zu spezifizieren, finde ich, soweit ich weiß, keine einfache Lösung. Zum Beispiel verwende ich jetzt ffmpeg Bibliotheken. Wenn Sie "Makefile", können die darunter und Bibliotheksdateien unten ausgedrückt werden:

FFMPEG_LIBS = libavdevice
libavformat
libavfilter
libavcodec
libswresample
libswscale
libavutil
CFLAGS: = $ (shell pkg-config --cflags $ (FFMPEG_LIBS)) $ (CFLAGS) LDLIBS : = $ (shell pkg-config --libs $ (FFMPEG_LIBS)) $ (LDLIBS)

Es gibt viele Dateien hier. Wenn ich sie einzeln in ein Eclipse C++ - Projekt einfüge, ist das entmutigend. Ich weiß nicht, warum es keine Möglichkeit in Eclipse gibt, dass wir Bibliotheksdateien mit einer langen Zeile einfügen können. als ein Separator, wie zum Beispiel:

-lavdevice -lavfilter -lswresample -lswscale -lavformat -lavcodec -ldl -lasound -lSDL lz -lrt -lavutil -lm

Gibt es eine solche Art und Weise oder muss ich die Bibliotheksdateien einzeln eingeben oder Makefile verwenden?

+0

BTW, ich habe einmal pkg-config plug-in für Eclipse ausprobiert, was nicht für eine Bibliothek funktioniert hat, die ich ausprobiert habe. Lass es mich nochmal versuchen, da ich vermute, dass der vorherige Fehler auf einen Bug zurückzuführen sein könnte. Aber ich denke, es wäre schöner, eine Option zu haben, um die Bibliotheksdateien mit einer Zeile zu versehen. – user1914692

+0

Ich denke, ich finde einen Weg. Gehe zu Eigenschaften -> C/C++ Build -> Einstellungen -> GCC C++ Linker -> Verschiedenes -> Linker Flags, du könntest "-lavdevice" etc. eingeben, um die Bibliotheken anzugeben. – user1914692

3

Ich kopiere nur ein Projekt aus der Verwendung von Eclipse in Project Explorer gebaut. Benennen Sie anschließend Quelldateien einfach um.

5

Für Bibliotheken ich folgendes im Source-Projekt haben:

Projekt -> Eigenschaften -> C/C++ Erstellen -> C++ Linker -> Bibliotheken

Danach I Bibliotheken wählen (shift + Maus) & Kopie (ctrl + c)

im leeren Projekt:

Projekt -> Eigenschaften -> c/C++ Erstellen -> C++ Linker -> Bibliotheken

Strg + V (Einfügen)

Adaequat mit Eclipse juno

+0

Wie wäre es mit Eclipse-IDE für C/C++ - Entwickler? Version: Mars Release (4.5.0). Build-ID: 20150621-1200? – Eduardo

0

ich das gleiche Problem konfrontiert und löste es wie folgt aus: ich sah, dass in den automatisch generierten Make-Datei gibt es Linien:

-include ../makefile.init 
... 
-include ../makefile.defs 
... 
-include ../makefile.targets 

nach dem Lesen How can I parameterize an Eclipse generated make file Ich erkannte, dass Sie Variablen außerhalb Ihres Projekts definieren können. Das bedeutet, dass es sich um eine Variable für mehrere Projekte handeln kann. So habe ich makefile.defs Datei außerhalb des Projekts und erklären darin einige Variablen:

MY_INCLUDE = <path to include>... 
MY_LIBS_PATH = <path to libs>... 
MY_LIBS = -lmylib ... (the libs) 

als in allen meinen Projekten "Eigenschaften-> c/C++ Build-> Variablen bauen" I definiert neue Variable:

my_include = $(MY_INCLUDE) 
my_libs_path = $(MYLIBS_PATH) 
my_libs = $(MY_LIBS) 

Und dann können Sie diese Variablen in den Projekten. Gehe zu Eigenschaften-> c/C++ build-> Settings und wähle compiler includes und füge $ (my_include) hinzu. Gehen Sie zum Linker und wählen Sie Bibliotheken und fügen Sie den Suchpfad $ (my_libs_path) hinzu.Aus irgendeinem Grund können die Libraries (-l) meine definierte env-Variable nicht verwenden, also umgehe ich sie, indem ich den Linker wähle und dann zu Miscellaneous gehe und zu den Linker-Flags $ (my_libs) hinzufüge. Schließlich müssen Sie die Reihenfolge in der Befehlszeile ändern (wenn der Linker ausgeführt wird), weil die Liste der Bibliotheken nach den O-Dateien kommen muss. Um das zu tun, gehen Sie zu Linker und Tab und dort können Sie die letzte Befehlszeile sehen, die ausgeführt wird. In "command line pattern" für Experteneinstellungen verschieben Sie die $ {FLAGS} in den hinteren Teil der Befehlszeile (wodurch die Zeichenfolge $ (my_libs) in den Hintergrund der Befehlszeile verschoben wird). DAS ALLES. es ist eine Menge, aber Sie müssen es tun, nur einmal ... hoffen, dass es jemand ...

0

Halb automagically hilft, kann es mit diesem Perl-Skript getan werden:

#!/usr/bin/perl 

# pipe the (gcc) compile command into this script 
# It emits listOptionValue lines to paste into .cproject 
# 
# To easily find the paste location, set the include path as usual to a string 
# that is easily recognizable in the .cproject, e.g. to "MARKER_INCLUDE_PATH". 
# 
# Make sure eclipse is not running while you do these sorts of hacks and backup 
# your .cproject before. 
# ----------------------------------------------------------------------------------------- 
# sample line: <listOptionValue builtIn="false" value="/usr/include/gdk-pixbuf-2.0"/> 

while (<>) { 
    @include_options = m#-I *(.*?) #g; 
    print join ("\n", @include_options) . "\n"; 
    print join ('"/>' ."\n" . '         <listOptionValue builtIn="false" value="', @include_options); 
    print '"/>' . "\n"; 
} 
Verwandte Themen