Der Standard Idiom ist die Objektdatei (nicht die Quelldatei!) Haben, hängt von einem Ziel, das nicht existiert und hat keine Regeln oder Abhängigkeiten (dieses Ziel wird üblicherweise FORCE genannt), wie diese
always-recompile.o: FORCE
FORCE:
Dies wird jedoch brechen, wenn eine Datei namens "FORCE" irgendwie erstellt wird. Mit GNU machen Sie stattdessen die spezielle Ziel .PHONY verwenden können, die diese Einschränkung nicht, aber Sie erfordert eine explizite Vorschrift haben die Datei neu zu erstellen:
always-recompile.o:
$(CC) $(CFLAGS) -c -o always-recompile.o always-recompile.c
.PHONY: always-recompile.o
http://www.gnu.org/software/make/manual/html_node/Phony-Targets.html Siehe für weitere Details.
Dies könnte die falsche Lösung für Ihr Problem sein. Einige Versionierungs-Tools können Einzelheiten der Version Ihrer Quelle ausgeben. Ein bisschen Skript-Hacker in Ihrem Build-Prozess und diese Details werden in Ihren Code eingebaut. Es spielt keine Rolle, ob Sie die Quelle auschecken und in zehn Jahren neu erstellen müssen - Ihre Versionsinformationen werden weiterhin die Details für dieses Tag wiedergeben. – Steve314
@ Steve314: eher will er eine über Box, die die Build-Nummer und Build-Datum erwähnt. –
@Ken - wenn ja, ist der Versions-Tool-Trick der richtige Weg. Es gibt keinen Grund, warum der Skript-Hacker die Versionsdetails nicht in den Code (oder die Ressourcendatei) für ein About-Feld einfügen kann, und das Abrufen einer Build-Nummer in eine About-Box erfordert wahrscheinlich eine leicht vergessene manuelle Intervention. Weder make, der Compiler noch das Dateisystem kennen Ihre Build-Nummer. – Steve314