codice:
%.o: %.c $(INCLUDE)
Questa linea dichiare che la regola per creare files .o da files .c (il % è il carattere jolly dei makefiles).

Generalmente, una regola del makefile contiene le seguenti direttive:

codice:
target: sources
        commands...
che dice al sistema che per generare "target" bisogna eseguire i "commands" comandi sui file "sources". Ergo:

$@ = target
$< = il primo file di sources
$^ = sources

Per esempio, dato il seguente Makefile:

codice:
destinazione: da1 da2 da3
        @echo '$$'"@ = $@"
        @echo '$$'"< = $<"
        @echo '$$'"^ = $^"

da%:
        @echo > $@
il comando make ti stamperà:

codice:
$@ = destinazione
$< = da1
$^ = da1 da2 da3
e ti creerà i files "da1", "da2" e "da3": provare per credere.

PS: la manfrina @echo '$$'"... serve per evitare di far espandere $@, $< e $^, in modo da avere

codice:
$@ = destinazione
e non

codice:
destinazione = destinazione