Suche
Suche Menü

Erweiterungen

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 $<