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.
Artigo muito interessante. Uma pergunta ... o que você chama de "variáveis" não seriam funções ou métodos?
Na verdade, sim meu amigo, obrigado pela correção.
Felicidades! 🙂
Excelente, espero que você continue cavando.
Bem, nem uma coisa nem outra, https://www.gnu.org/software/make/manual/make.html, são "alvos"
regras
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.