EMZETT.
Login

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ängigkeiten und 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 wie CC=gcc.
  • Aktualität: make vergleicht Änderungszeiten. Nur Ziele mit neueren Abhängigkeiten werden gebaut.
  • .PHONY: Ziele ohne Datei, etwa test oder clean, deklariert man so, damit eine gleichnamige Datei sie nicht blockiert.
  • Parallel: make -j8 baut 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