1. O que é Makefile?
makefile é um arquivo (por padrão chamado de "Makefile") que contém um conjunto de diretivas (linkers) usadas pela ferramenta de automação de compilação GNU Make para executar um alvo/meta/script.
1.1 Instalação
Primeiro vamos verificar se o make já esta instalado em sua distribuição:
$ make -v
O seu resultado, caso o GNU Make já esteja instalado em sua distro, será similar ao mostrado abaixo:
$ make -v
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
...
Se por acaso, o comando make não for reconhecido, você pode instalar com o seguinte comando:
$ sudo apt install make
1.2 Como usar?
Crie um diretório com nome de sua escolha, e dentro dele crie um arquivo de nome Makefile, com o seguinte conteúdo:
hello:
@echo "Hello World"
Na primeira linha, temos a diretiva (linker), e na segunda o comando a ser executando quando essa diretiva for acionada, para isso basta usar o comando make + a diretiva desejada, como no exemplo a seguir:
$ make hello
Hello World
Comando @
O @ no inicio da linha indica que você deseja ocultar o comando durante a execução, ou seja, caso você não inicie o comando com @ no script do comando, ele será exibido antes do resultado durante a execução, como no exemplo abaixo:
Makefile:
hello:
echo "Hello World"
Resultado:
$ make hello
echo "Hello World"
Hello World
Parâmetros
É possível também usar parâmetros, como por exemplo:
hello:
@echo "Hello World $(name)"
Resultado:
$ make hello name=Antonio
Hello World Antonio
Include:
As vezes o arquivo Makefile, pode ser torna bem grande, uma das formas de organizar isso, é separar os comandos de acordo com o contexto que melhor se encaixe e usar o comando include.
Por exemplo:
include= .targets-docker
include= .targets-sqs
Help
Essa é uma sugestão bem legal, é possível criar um comando help no makefile, para nos ajudar a entender para que server cada comando que criamos.
Existem varias formas de fazer isso, buscando um pouco na comunidade, encontrei alguns exemplos, e customizei da seguinte forma:
-
Crie um arquivo .help no mesmo diretório do Makefile em questão, com o conteudo abaixo:
-
Inclua esse arquivo iniciando seu makefile com o seguinte comando:
include .help
Agora basta fazer seus comandos, com comentario acima com ##, por exemplo:
## Escreve Olá Mundo!
hello:
echo "Hello World"
Referências e links úteis
Make Docs
Introdução ao Makefile
Samples Makefile
repo from example in the post
Top comments (2)
dont mess too complex. Use bake-cli in python instead!
Muito bom. O make facilita muito a utilização de comandos no projeto.