makefile - eigene Libs einbinden

Gast #815806
Lesenswert?

Hi!
wie stelle ich es an, viele unkompilierte Dateien
aus einem übergeordneten Ordner eizubinden.
Also ich möchte nicht jede .c Datei einzeln angeben.
Ich habe z.B einen Ordner namens USB, der nicht im Projektverzeichnis 
liegt, mit 20 .c Dateien. Diese sollen einzeln kompiliert und 
dazugelinkt werden.

danke!!
#815823
Lesenswert?

Alexander wrote:
> Hi!
> wie stelle ich es an, viele unkompilierte Dateien
> aus einem übergeordneten Ordner eizubinden.
> Also ich möchte nicht jede .c Datei einzeln angeben.
> Ich habe z.B einen Ordner namens USB, der nicht im Projektverzeichnis
> liegt, mit 20 .c Dateien. Diese sollen einzeln kompiliert und
> dazugelinkt werden.

Der einfachste Weg dürfte wohl darin liegen, diese 20 *.c Dateien
einzeln zu kompilieren und die entstehenden *.o in eine Library
zu stellen und dann in deinen eigentlichen Projekten einfach nur
diese Library einzulinken.

Dazu brauchst du den 'Librarian'. Im gcc-Packet heist der 'ar'
(wie archiv)

Beschreibung von ar findest du im Web. Zb
http://www.gnu.org/software/binutils/manual/html_chapter/binutils_1.html
Gast #815836
Lesenswert?

Das hängt etwas vom verwendeten Make Programm ab. Weiter hängt es davon 
ab, ob immer pauschal alle Dateien compiliert werden sollen, oder nur 
die benötigten.

Ich nehme mal GNU make an.

Wenn es nur die benötigten sein sollen, setze VPATH so, dass er das 
Verzeichnis mit dem Sourcecode enthält.

Wenn es immer alle C-Dateien in dem Verzeichnis sein sollen, dann bieten 
sich Wildcards an:
1
  MORE_SRCS = $(wildcard dir/*.c)
2
  MORE_OBJS = $(MORE_SRCS:.c=.o)
MORE_OBJS sollte dann noch irgendwo als Voraussetzung für das endgültige 
Target deklariert werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren