Seitenleiste

Abhängigkeiten formulieren

Möchte man Abhängigkeiten definieren, so werden die Abhängigkeiten hinter den Namen des Ziels beschrieben.

##
## Spaghetti kochen für Make-Anfänger
############################################
 
all: eat
 
buyspaghetti:
	@echo "Spaghetti kaufen";
 
spaghetti: buyspaghetti pot
	@echo "Spaghetti in Topf füllen";
 
pot: 
	@echo "Topf nehmen";
 
water: pot
	@echo "Wasser in Topf füllen";
 
salt: pot
	@echo "Salz in Topf füllen";
 
cook: water salt spaghetti
	@echo "Nudeln kochen.";
 
plate:
	@echo "Teller nehmen";
 
dish: cook plate
	@echo "Essen ist fertig!"
 
eat: dish
	@echo "esse...";

Die Ziele 'water', 'salt' und 'spaghetti' benötigen das Ziel 'pot'. Trotzdem wird nur ein Topf genommen, da das Ziel einmalig erzeugt wurde und dann bis zum nächsten Aufruf aktuell bleibt.

Das Makefile wird komplett geladen und dann erst ausgeführt. Das bedeutet, dass man auch Ziele als Abhängigkeit nennen kann, die man erst später definiert. Das Ziel 'all' ist oftmals das Default-Target, also das erste definierte Ziel, und sorgt so dafür, dass leicht erkennbar ist, wo das Skript startet.

Hier die Ausgabe des Skripts:

Ambassador:make xin$ make eat
Topf nehmen
Wasser in Topf füllen
Salz in Topf füllen
Spaghetti kaufen
Spaghetti in Topf füllen
Nudeln kochen.
Teller nehmen
Essen ist fertig!
esse...
Ambassador:make xin$