DEV Community 👩‍💻👨‍💻

Gustavo Aguiar
Gustavo Aguiar

Posted on

Como utilizar o Makefile

Se você nunca utilizou Makefile, este artigo vai te ajudar a ter uma noção básica de como criar suas primeiras tarefas e como utilizar.

O que é o makefile?

O Makefile é um arquivo que pode conter varias tarefas (comandos/atalhos) e para executar essas tarefas é utilizado a ferramenta make do GNU.

O make é uma ferramenta responsável por controlar a geração de executáveis.

Eu vou demonstrar alguns exemplos de uso, mas primeiro é necessário que seja criado um arquivo com o nome Makefile

Depois de criado o arquivo você pode copiar e colar esse trecho abaixo

olar:
   @echo "Olar Gustavo"
Enter fullscreen mode Exit fullscreen mode

Essa tarefa que se chama olar vai ser responsável por imprimir Olar Gustavo

Para executar a tarefa, certifique-se que esteja na pasta que foi criado o arquivo Makefile e depois execute no terminal de preferência o comando: make olar

O resultado é:

Olar Gustavo
Enter fullscreen mode Exit fullscreen mode

Uma observação o @ é para esconder o comando de saida, caso não coloque o resultado seria assim:

echo "Olar Gustavo"
Olar Gustavo
Enter fullscreen mode Exit fullscreen mode

Você pode também passar parâmetros

olar:
   @echo "Olar $(name)"
Enter fullscreen mode Exit fullscreen mode

Para executar o comando: make olar name="Gustavo Aguiar"

Você pode também executar várias tarefas ao mesmo tempo

test:
   @go mod vendor
   @go test ./...
Enter fullscreen mode Exit fullscreen mode

Você pode criar comandos para construir sua aplicação e rodar projetos

start: build run ## Inicia a criação da aplicação
build: 
    @echo "Building app..."
    @docker build . -t app
run:
   @echo "Running app..."
   @docker run --rm -it app
Enter fullscreen mode Exit fullscreen mode

Detalhes a mais

Agora vamos criar um comando chamado help

help:
    @grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | grep ^help -v | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-22s\033[0m %s\n", $$1, $$2}'
Enter fullscreen mode Exit fullscreen mode

Esse comando tem como objetivo imprimir todos os atalhos que estão criados dentro do Makefile, mas para imprimir deve colocar um comentário na frente do comando, por exemplo:

olar: ## Comando responsável por imprimir o nome, Olar {valor}
        @echo "Olar $(name)"
Enter fullscreen mode Exit fullscreen mode

No começo do arquivo, coloque o comando .PHONY, ele será
responsável por indicar para o Makefile que o comando help não é um arquivo, porque por padrão o make vai tentar executar o help como se fosse um arquivo.

.PHONY: help
Enter fullscreen mode Exit fullscreen mode

Comando para imprimir o nome do projeto

define TITLE_ART

  ____  _               _____           _                   
 / __ \| |             / ____|         | |                  
| |  | | | __ _ _ __  | |  __ _   _ ___| |_ __ ___   _____  
| |  | | |/ _` | '__| | | |_ | | | / __| __/ _` \ \ / / _ \ 
| |__| | | (_| | |    | |__| | |_| \__ \ || (_| |\ V / (_) |
 \____/|_|\__,_|_|     \_____|\__,_|___/\__\__,_| \_/ \___/ 

endef
export TITLE_ART

welcome:
    @echo "$$TITLE_ART"
Enter fullscreen mode Exit fullscreen mode

Gerador de títulos:

https://www.kammerl.de/ascii/AsciiSignature.php

Conclusão

Eu demonstrei exemplos simples, mas que podem facilitar o dia a dia de qualquer desenvolvedor, como evitar ficar escrevendo comandos extensos e até mesmo utilizar como uma documentação de instruções de como rodar o projeto.

Espero que essa leitura tenha sido útil!

Documentação do Make:

https://www.gnu.org/software/make/
https://www.gnu.org/software/make/manual/make.html

Top comments (0)

We are hiring! Do you want to be our Senior Platform Engineer? Are you capable of chipping in across sysadmin, ops, and site reliability work, while supporting the open source stack that runs DEV and other communities?

This role might just be for you!

Apply now