La logica dei makefile è la seguente

codice:
targetList: dependencyList
[TAB]	    command
[TAB]	    command
[TAB]	    command
...
targetList è la lista degli oggetti che si vuole creare
dependecyList sono gli oggetti necessari per creare targetList
[TAB] è il carattere tabulatore
command è un comando utile alla creazione di targetList, si possono specificare più comandi per ogni targetList

se ad esempio vuoi compilare main.c, scriverai

main.o: main.c libreria.c ecc...

non è necessario specificare alcun comando, perchè make sa che i file .c si compilano con cc