Die Regeln dürfen "rekursiv" sein:
rot: rot.c gruen bunt.h
mache_rot
gruen: gruen.c bunt.h
mache_gruen
führt bei Änderungen an gruen.c erst mache_gruen
aus
und dann (falls gruen geändert wurde) mache_rot
. Falls
sich nur rot.c geändert hat, wird jedoch nur mache_rot
ausgeführt.
Ringförmige Abhängigkeiten werden von make erkannt und mit einer
Fehlermeldung belohnt. Außerdem wird eine der Abhängigkeiten
ignoriert. make: Circular rot <- gruen dependency
dropped.
Das erste Target in der makefile ist default (außer das Target begint
mit einem Punkt), wenn kein anderes Target auf der Kommandozeile angegeben
wird. Also wird oft all:
alles was kompiliert werden soll
als erste Regel verwendet.
all:
, clean:
und install:
sollten
normalerweise vorhanden sein.
Theoretische könnte es eine Datei clean geben, die das Ausführen
der clean
-Regel verhindern würde.
Um das zu umgehen verwendet man zusätzlich:
.PHONY: clean