Em sua forma mais simples, um makefile é basicamente uma lista de comandos, separados por rótulos. Por convenção, o rótulo all
é geralmente usado como uma espécie de padrão.
O makefile consiste em:
label1: [dep1 ... depN]
<tab> command1
<tab> command2
label2: [dep1 ... depN]
<tab> command1
<tab> command2
...
Um erro de iniciante tradicional é recuar usando espaços, mas faz com que os comandos desejem serem recuados usando um único caractere de tabulação.
Para um caso simples, você pode ignorar as dependências.
Assim, o makefile mais simples será algo nos seguintes termos:
all:
<tab> cc -o hello -Wall hello.c
Invocando make
em um diretório onde exista um arquivo como o acima, pois Makefile
fará com que cc -o hello -Wall hello.c
seja invocado. Se a sua marca for realmente exigente, talvez seja necessário dizer explicitamente make all
, mas isso não deve ser necessário.
Há cerca de um milhão de possibilidades com makefiles, mas o acima deve começar. Estritamente falando, os exemplos acima são para o GNU make, mas makefiles são tão onipresentes que eu não vejo outras implementações fazendo o caso de uso básico de forma muito diferente.