Im folgenden wollen wir das Makefile-Beispiel erweitern.
Variablen setzen
Um mehr Dynamik zu erhalten können wir Variablen einsetzen. Erstellt wird eine Variable mit einer einfachen Zuweisung =, der Zugriff erfolgt über ein Dollarzeichen und den eingeklammerten Variablennamen, zum Beispiel $(OBJ).
Hier wurden die Objektdateien und der Compilername in Variablen verpackt.
CC = gcc OBJ = main.o foo.o bar.o prog: $(OBJ) $(CC) -o prog $(OBJ) main.o: main.c $(CC) -c main.c foo.o: foo.c $(CC) -c foo.c bar.o: bar.c $(CC) -c bar.c
Wildcards
Mit Wildcards können wir Befehle auf eine Gruppe von Dateien anwenden. Hier sollen nun alle .c-Dateien zu .o-Dateien kompiliert werden. Diese werden mit dem %-Operator gesucht. Der gefundene Dateiname kann mit $< verwendet werden.
CC = gcc OBJ = main.o foo.o bar.o prog: $(OBJ) $(CC) -o prog $(OBJ) %.o: %.c $(CC) -c $<
Makros
Um den Code noch kryptischer, aber dafür kürzer zu machen, können wir noch Makros verwenden. Dies ist nur eine kleine Auswahl, es gibt noch viel mehr.
- $@, voller Name des Ziels
- $*, Name des Ziels ohne Endung
CC = gcc OBJ = main.o foo.o bar.o prog: $(OBJ) $(CC) -o $@ $(OBJ) %.o: %.c $(CC) -c $<