Zmienne dynamiczne / automatyczne – są zmiennymi które zmieniają się w trakcie wykonywania reguły.
CC=gcc
CFLAGS=-g
OBJS=hello.o aux.o
hello: $(OBJS)
$(CC) $(LFLAGS) $^ -o $@
hello.o: hello.c
$(CC) $(CFLAGS) -c $< -o $@
aux.o: aux.c
$(CC) $(CFLAGS) -c $< -o $@
< - Aktualny plik z listy składników
@ – Nazwa pliku docelowego
^ – Wkleja listę składników
Powyższy przykład możemy skrócić używając zmiennych dynamicznych z wzorcem:
$(OBJS): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
Kolejne dodanie obiektu do kompilowania naszego programu sprowadza się do dopisania nazwy naszego pliku do zmiennej
OBJS