Estrutura do Makefile
O Makefile é organizado em regras. Cada regra descreve como um arquivo deve ser gerado a partir de outros arquivos e quais comandos precisam ser executados para isso.
De forma geral, cada regra possui três partes:
- alvo (target): o arquivo ou ação que queremos gerar;
- pré-requisitos (prerequisites): os arquivos necessários para gerar esse alvo;
- instruções (recipe): os comandos executados pelo
make.
# alvo pré-requisitos
target: prerequisites
recipe
Entendendo uma regra
Quando o make encontra uma regra, ele verifica se o alvo já existe e se está atualizado em relação aos seus pré-requisitos. Se o alvo não existir, ou se algum pré-requisito for mais recente, os comandos da regra serão executados.
target: é o nome do arquivo que será gerado, como um executável, objeto ou biblioteca.prerequisites: são os arquivos necessários para construir o alvo, como.asm,.c,.hou.inc.recipe: são os comandos usados para produzir o alvo.
Exemplo prático
Vamos usar novamente o exemplo do clássico hello.asm.
hello.o: hello.asm
nasm -f elf32 -o hello.o hello.asm
hello: hello.o
ld -m elf_i386 -o hello hello.o
clean:
rm -f hello.o hello
Nesse exemplo:
- a regra
hello.o: hello.asmmonta o código Assembly e gera o arquivo objetohello.o; - a regra
hello: hello.oliga o objeto e gera o executávelhello; - a regra
cleanremove os arquivos gerados durante o processo.
Executando o Makefile
Depois de criar o Makefile no mesmo diretório do arquivo hello.asm, basta executar:
make
O make executará a primeira regra principal do arquivo e gerará o executável hello.
Se quiser limpar os arquivos produzidos durante o build, execute:
make clean
Observação importante
Nos comandos do Makefile, cada linha de instrução deve começar com uma tabulação real. Se você usar espaços no lugar de TAB, o make poderá acusar erro.
| Anterior | Principal | Próximo |