Em termos simples, você pode pensar em make
como tendo um número (possivelmente grande) de etapas, em que cada etapa usa vários arquivos como entrada e cria um arquivo como saída.
Uma etapa pode ser "compilar file.c
a file.o
" ou "usar ld
para vincular main.o
e file.o
a program
". Se você interromper make
com Ctrl C , então a etapa atualmente em execução será terminada, o que irá (ou deverá) remover o arquivo de saída em que estava trabalhando. Geralmente, não há nenhum "binóculo incompleto" deixado para trás.
Quando você reinicia o make
, ele irá ver os registros de data e hora de todos os arquivos de entrada e saída e executará novamente as etapas em que:
- um arquivo de entrada possui um registro de data e hora mais recente que o arquivo de saída
- o arquivo de saída não existe
Isso geralmente significa que se uma etapa levar muito tempo para ser executada (é raro em computadores modernos, mas a ld
para programas grandes pode levar muitos minutos quando make
foi criada), parando e reiniciando make
iniciará esse passo desde o começo.
A realidade do seu Makefile
médio é consideravelmente mais complicada do que a descrição acima, mas os fundamentos são os mesmos.