.PHONY: b
c: a
@touch c
@echo "Changed"
a: b
b:
@date +%s > a
Wenn make mit der Beispieldatei ausgeführt wird, wird "Changed" beim ersten Mal gedruckt, aber "Changed" wird erst bei der dritten, fünften, usw. Ausführung gedruckt. Das liegt daran, dass make nicht zu erkennen scheint, dass die Ausführung des Rezepts für Ziel "b" a aktualisiert.
Wenn Sie die Regel mit "a" als Ziel in ein leeres Rezept ändern, wird bei jedem Durchlauf von make "Changed" gedruckt (wie Sie es erwarten würden - wobei falsche Ziele immer als "veraltet" gelten). z.B..
a: b ;
Make sollte die implizite Regelsuche für PHONY-Ziele überspringen, aber "a" ist nicht PHONY. Wenn keine implizite Regel für "a" gefunden wird, ist es dann richtig, dass make nicht berücksichtigt, dass "a" durch seine PHONY-Abhängigkeit "b" verändert worden sein könnte?