2010-10-22 3 views
9

Ich verwende das Eclipse CDT. Ich habe den "externen Builder" konfiguriert und erstelle die Makefiles automatisch. Leider enthalten die generierten Makefiles den absoluten Include-Pfad. Ich möchte die generierten Makefiles auf anderen Systemen verwenden (wo Eclipse nicht installiert ist) - gibt es eine Möglichkeit, Eclipse relative Pfade in Makefile zu verwenden?Eclipse CDT zur Verwendung von relativen Include-Pfaden in generierten Makefiles erhalten

Ich habe meine Projekte Include-Verzeichnis unter Einstellungen -> Tool-Einstellungen -> GCC C Compiler -> Include-Pfade mit $ {workspace_log} konfiguriert.

+1

Die folgende akzeptierte Antwort funktioniert für Include-Pfade im Projekt, aber was ist mit verknüpften Ressourcendateien? Mein generiertes Makefile enthält immer noch Quelldateien mit absoluten Pfaden. Verwenden Sie keine verknüpften Quellen in Ihrem Projekt? Wie können Sie auf anderen Systemen kompilieren? – dtmland

Antwort

4

Wenn Sie den relativen Pfad in den 'include paths' (anstelle von ${workspace_loc}) verwenden, enthält das Makefile (und die verwendeten .mk-Dateien) ebenfalls relative Pfade.

+5

Relativ von wo aber? – CashCow

+1

Wie erreichen Sie das gleiche für verknüpfte Quelldateien? In meinen generierten Makefiles werden sie immer noch auf absolut gesetzt? – dtmland

+0

Nein, tut mir leid ... Ich habe in etwa 4 Jahren nicht mit Eclipse gearbeitet. –

3

Die relativen Pfade, die Sie in "Projekt> Eigenschaften> C/C++ Allgemein> Pfade und Symbole> Includes" hinzufügen, sind relativ zu Ihrem Projektordner.

Die Namen, die in den generierten Makefiles angezeigt werden, sind relativ zum Makefile-Hauptspeicherort.

1

Es gibt einen besseren Weg, dies zu tun: "Projekt> Eigenschaften> C/C++ Build> Einstellungen> Werkzeugeinstellungen> Cross G ++ [oder GCC] Compiler> Includes". Klicken Sie auf Plus-Taste, dann schreiben:

"$ {} ProjDirPath /../../../ somefolder1/somefolder2"

Dieser Ansatz ermöglicht es Ihnen, alle externen Ordner relativen Pfad angeben zu Ihrem Projektordner, auch wenn es sich in übergeordneten Unterordnern befindet.