Makefile-Grundlagen
Kurz: Ein Makefile beschreibt, welche Dateien aus welchen entstehen und mit welchen Befehlen. make baut dann nur neu, was veraltet ist.
Genauer: Das Werkzeug stammt aus den 1970ern, ist aber bis heute verbreitet, auch als einfacher Aufgabenstarter für Projekte jeder Sprache.
Im Detail
- Regel:
ziel: abhängigkeitenund darunter, mit Tabulator eingerückt, die Befehle.
programm: main.o util.o
cc -o programm main.o util.o
%.o: %.c
cc -c $< -o $@- Variablen:
$@(Ziel),$<(erste Abhängigkeit),$^(alle). Eigene wieCC=gcc. - Aktualität:
makevergleicht Änderungszeiten. Nur Ziele mit neueren Abhängigkeiten werden gebaut. - .PHONY: Ziele ohne Datei, etwa
testoderclean, deklariert man so, damit eine gleichnamige Datei sie nicht blockiert. - Parallel:
make -j8baut unabhängige Ziele gleichzeitig. - Fallstricke: Leerzeichen statt Tabulator, Befehle laufen je Zeile in eigener Shell.
- Alternativen: CMake, Ninja, Just, Task. Siehe Abhängigkeiten und Bibliotheken.
Siehe auch: Reproduzierbare Builds