Para você que é um programador novato, já deve ter se deparado com o seguinte problema, precisar compilar vários arquivos, mas é chato ter que compilar um a um né? Bom, o comando
make serve para isso, você pode compilar vários arquivos somente usando uma simples chamada a este comando, exemplo:
$ make
Assim, simples. Aí surge a pergunta, mas como diabos isso funciona, eu tentei e não consegui.
Bem isto é que irei explicar neste artigo.
O arquivo Makefile
O comando make faz uma "leitura" de um arquivo chamado Makefile (do inglês, ARQUIVO MAKE). Você tem que incluir um arquivo deste tipo para poder usar o comando nos seus programas, acho que a melhor maneira de explicar é dando um exemplo não é? Então vamos ao exemplo:
<main.c>
/*irei fazer um simples programa em C para demostrar como funciona*/
#include<stdio.h>
int main(){
int num1;
printf("Este programa mostra a tabuada.\n");
printf("Você quer saber a tabuada de que numero:\n");
printf("#: ");
scanf("%d",&num1);
for(int i=0;i<11;i++){
printf("RESULTADO: %d\n",i*num1);
}//for
getchar();
return 0;
}//main
Beleza, um programa simples para mostrar a tabuada na tela.
Agora vamos fazer o arquivo Makefile:
#Você tem que salvar este arquivo com o nome de Makefile ou makefile
tabuada: main.o
gcc -o tabuada main.o #aqui você é obrigado a dar um espaço de tabulação
main.o:main.c
gcc -c main.c #irei explicar mais adiante
#agora é só salvar na mesma pasta do arquivo <main.c>
PRONTO!!! O que você precisa fazer agora é só dar o make na linha de comando.
$ make
Explicação
Ah, muito bonito, mas não entendi nada daquele Makefile! Calma, vou explicar:
tabuada: main.o
Esta linha diz que o "script" tabuada é formado a partir do main.o.
gcc -o tabuada main.o
Aqui falei que precisa dar um espaço de tabulação (um TAB), o porque disto é explicado em REGRAS DA SINTAXE, se você simplesmente der um espaço ele irá dizer que tem erro, com uma mensagem bem chatinha.
gcc -o tabuada main.o é sobre o compilador, mas quer dizer que é para "montar" o arquivo tabuada com o main.o.
main.o.main.c
Esta linha diz que é para "montar" o arquivo main.o a partir de main.c. Quando digo montar quer dizer que é uma dependência, ou seja, o arquivo main.o depende de main.c, mas acho que montar fica mais fácil o entendimento, pelo menos para mim. :)
Bom, vimos para que o comando make serve, espero que todos tenham entendido, se ficou algo meio confuso, por favor avise-me para eu melhorar no próximo artigo.
Meu e-mail é: andiroots@gmail.com
Obrigado a todos!