Faça isso usando suas regras incorporadas . Estes dizem em particular como compilar o código C e como ligar programas de objeto único.
Você nem precisa de um Makefile:
make test
funcionaria sem um.
Para ver as regras ocultas que tornam tudo isso possível, use a opção -p
sem Makefile:
make -p -f /dev/null
Como apontado por alephzero , o Make tem regras internas há muito tempo (se não sempre); A primeira versão de Stuart Feldman no Unix V7 define-os em files.c
e seu artigo de 1979 os menciona. Eles também fazem parte da especificação POSIX . (Isso não significa que todas as implementações do Make o suportem - o antigo Borland Make para DOS não, pelo menos até a versão 3.0.)