O que é um Makefile e como ele funciona no Linux?

O que é um Makefile e como funciona no Linux

Si deseja executar ou atualizar uma tarefa quando certos arquivos são atualizados, o utilitário make pode ser útil. O utilitário make requer um arquivo, makefile, que define um conjunto de tarefas a serem executadas.

Este nome soará familiar para muitos de vocês, pois podem ter usado make para compilar um programa a partir do código-fonte. A maioria dos projetos de código aberto usa make para compilar um binário executável final, que pode ser instalado usando make install.

Desta vez vamos entender como esse tipo de arquivo funciona no Linux.

Um arquivo makefile É basicamente distinguido em quatro tipos básicos de declarações:

  • comentários
  • Variáveis
  • Regras explícitas.
  • Regras implícitas.

As regras explícitas informam ao make quais arquivos dependem de outros arquivos, bem como os comandos necessários para compilar um determinado arquivo.

Enquanto os implícitos são semelhantes aos explícitos, mas com a diferença indicam os comandos a serem executados, mas o make usa as extensões dos arquivos para determinar quais comandos executar.

Neste exemplo, não vamos usar esses dois últimos, Vamos apenas começar imprimindo o clássico "Hello World" no terminal.

Para isso vamos criar um diretório vazio com o nome que você deseja.

Neste caso vamos chamá-lo de "fazer um exemplo" e dentro disso Vamos criar um makefile com o seguinte conteúdo:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"

Agora execute o arquivo digitando make dentro do diretório, a saída será:

make
echo "Hola Mundo"
Hola Mundo

Como você pode ver quando o makefile foi executado, o comando echo "Hello World" é exibido, seguido pela saída do comando real. Muitas vezes não queremos isso. Para suprimir essa saída ao executar make, basta adicionar um "@" antes de echo:

O exemplo prático disso é:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"

Agora podemos prosseguir para executar o makefile novamente. A saída exatamente isso deve mostrar:

make
Hola Mundo

Isso é muito básico. Mas como você sabe, makefiles contém muitas coisas, das quais indicam as sequências a seguir.

Podemos adicionar algumas sequências simples a este arquivo.

Retirei vamos fazer é editar o arquivo da seguinte maneira:

#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Ao executar novamente o makefile, isso só executará o primeiro objetivo. Isso porque apenas o primeiro destino no makefile é o destino padrão.

Para que a execução seja realizada em sequência é necessário indicá-lo dentro do arquivo com "todos". É responsabilidade de "lá" chamar outros alvos.

all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch  archivo.txt

Você pode executar o make novamente e verá que dentro do diretório um arquivo chamado "Arquivo.txt".

Similarmente é possível executar um alvo dentro do arquivo makefile, isso geralmente é muito usado.

Vamos modificar nosso arquivo e adicionar o seguinte no final:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt

Você pode executar o make novamente e ele recriará o arquivo txt. Como você verá, ele fará a mesma coisa da vez anterior. Mas agora vamos executar o alvo que está dentro do arquivo makefile.

Fazemos isso com:

make clean

Com isso podemos aprender algo bastante básico sobre como fazer arquivos e como eles podem ser bastante úteis se quisermos automatizar algumas coisas.

Obviamente, você pode construir um arquivo maior e mais complexo, mas este é um mero exemplo para iniciantes (eu me incluo) que estão começando a saber como isso funciona.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   arg0s dito

    Artigo muito interessante. Uma pergunta ... o que você chama de "variáveis" não seriam funções ou métodos?

    1.    David Orange dito

      Na verdade, sim meu amigo, obrigado pela correção.
      Felicidades! 🙂

  2.   Peter dito

    Excelente, espero que você continue cavando.

  3.   manuelalcocer dito

    Bem, nem uma coisa nem outra, https://www.gnu.org/software/make/manual/make.html, são "alvos"

  4.   manuelalcocer dito

    regras

  5.   Sebas dito

    Esperançosamente, eles continuam a explicar coisas como esta, "onipresente e elementar", do funcionamento diário do Linux, que ninguém jamais explica com a mesma paixão com que essas "vantagens e operação" são pregadas.