Hallo,
ich beschäftige mich gerade mit dem Schreiben von Makefiles.
1 | ...
|
2 | initialisierung von OBJ
|
3 | ...
|
4 | prog: $(OBJ) makefile
|
5 | gcc -o prog $(OBJ) $(patsubst %,-I%,$(EXTRAINCDIRS))
|
6 |
|
7 | %o: %.c
|
8 | gcc -c -g $*.c $(patsubst %,-I%,$(EXTRAINCDIRS))
|
Damit sage ich make ja dass mein fertiges Binary von allen
Objekt-Dateien sowie vom makefile selbst abhängig ist.
Die Objekt-Dateien hängen von ihren .c Dateien ab. Nur leider werden
dadurch Änderungen in Headerdateien nicht berücksichtigt, soweit
richtig?
Also lasse ich erstmal für jede Source-Datei ein depency-file anlegen:
1 | %.dep: %.c %.h
|
2 | gcc -MM $*.c $(patsubst %,-I%,$(EXTRAINCDIRS)) > $*.dep
|
Soweit, so gut. Ich erhalte jetzt mehrere Datein mit diesem oder
ähnlichem Inhalt:
1 | subroutine.o: subroutine.c subroutine/subroutine.h
|
Und jetzt häng ich grad beim Verständnis.
Diese Dateien werden ja mittels -include eingefügt (zumindest bei GNU
make).
D.h. für make steht da jetzt ein Target (subroutine.o:) das von
bestimmten Sourcen und Headern abhängt.
Aber wie gebe ich an, wie dieses Target gebaut werden soll?
Vor allem, ich hab ja mehrere depency-files, die müssen ja alle
irgendwie includiert werden.
Kann mir da jemand weiterhelfen?