Pages

Thursday, June 04, 2009

Uma introdução ao comando make

Eu peço uma licença poética a todos para facilitar aqui a explicação sobre o que é o comando make. Considere este um dos programas mais complexo e mais simples do universo *nix. Essa contradição somada a um rico e super-direto manual, tende a não fornecer uma das melhores famas a esse programa.

O programa.

O make é um programa como qualquer outro, normalmente instalado no GNU/Linux como um pacote independente. Sua função é muito simples. O make executa instruções contidas em um certo arquivo. Digitando apenas make no terminal, o comando busca pelo arquivo Makefile existente dentro do mesmo diretório onde foi executado. O arquivo com as instruções pode ser manualmente especificado com a opção -f. Nesse caso, ele pode estar em qualquer diretório e ter
qualquer nome.

O arquivo Makefile - Conceitos básicos.

Me permitam fazer o paralelo de associar a idéia de um Makefile, com um script para shell. Pois os dois possuem a mesma função prática.

O script executa instruções divididas de acordo com opções pré-estabelecidas no seu interior. O make executa instruções estabelecidas de acordo com cada uma dos blocos de instruções de um arquivo Makefile.

O Makefile, portanto, contém instruções em série de algo que deseja fazer. Exatamente da mesma forma que seria, caso estivesse escrevendo um script.

O Makefile é dividido em blocos de comandos. Cada bloco possui um nome, e esse nome tona-se um argumento para o comando make.

Veja um exemplo de bloco:
clean:
rm -vf *.backup
rm -vf *~
rm -vf *.o
O nome do bloco é "clean".
As instruções são para utilizar o comando rm com as opções -vf (verbose e force).
Eles estão uma linha abaixo do nome e separado de pelo menos uma tabulação da primeira coluna da lina.

O uso do make.

Tradicionalmente, o uso básico do make consiste em algumas poucas opções:
  • make
    Digitando apenas make no terminal, o programa procura pelo Makefile e executa o primeiro dos blocos de comandos existentes dentro desse arquivo.
  • make -f ARQUIVO
    Esse exemplo é igual ao anterior, mas o arquivo Makefile está em um lugar qualquer do disco, com um nome qualquer também... Não é um uso comum.
  • make dothat
    Nesse exemplo, dothat representa o nome de uma das instâncias existentes dentro do arquivo Makefile.
    No nosso simples exemplo, poderíamos escrever "make clean" e ele executaria as instruções daquele bloco naquele comando. Note que se "clean" for o primeiro bloco de comandos, digitar apenas "make" ou "make clean" produz o mesmo resutado.
No próximo texto sobre o assunto, estudaremos um Makefile detalhadamente. Será o Makefile que eu escrevi e disponibilizei para compilar o códigos em LaTeX. Não é um Makefile tão simples, nem tão complicado. Dará um interessante estudo de caso.

1 comment:

  1. Cara, fico ansiosamente no aguardo das proximas lições... eu sempre me prometo estudar a fundo o make (só uso o básico do básico do básico, as vezes sem entender o que tá ali), mas fico empurrando pra frente. Pela qualidade deste seu primeiro post, já deu pra ver que vai ser muito bom!
    Abraços e obrigado!
    Carlão

    ReplyDelete