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"
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
Uma observação o @ é para esconder o comando de saida, caso não coloque o resultado seria assim:
echo "Olar Gustavo"
Olar Gustavo
Você pode também passar parâmetros
olar:
@echo "Olar $(name)"
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 ./...
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
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}'
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)"
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
Comando para imprimir o nome do projeto
define TITLE_ART
____ _ _____ _
/ __ \| | / ____| | |
| | | | | __ _ _ __ | | __ _ _ ___| |_ __ ___ _____
| | | | |/ _` | '__| | | |_ | | | / __| __/ _` \ \ / / _ \
| |__| | | (_| | | | |__| | |_| \__ \ || (_| |\ V / (_) |
\____/|_|\__,_|_| \_____|\__,_|___/\__\__,_| \_/ \___/
endef
export TITLE_ART
welcome:
@echo "$$TITLE_ART"
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)