DEV Community

Cover image for Produtividade com Makefile
Antonio Motta
Antonio Motta

Posted on

Produtividade com Makefile

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
Enter fullscreen mode Exit fullscreen mode

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.
...
Enter fullscreen mode Exit fullscreen mode

Se por acaso, o comando make não for reconhecido, você pode instalar com o seguinte comando:

$ sudo apt install make
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

Resultado:

$ make hello
echo "Hello World"
Hello World
Enter fullscreen mode Exit fullscreen mode

Parâmetros

É possível também usar parâmetros, como por exemplo:

hello:
    @echo "Hello World $(name)"
Enter fullscreen mode Exit fullscreen mode

Resultado:

$ make hello name=Antonio
Hello World Antonio
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Crie um arquivo .help no mesmo diretório do Makefile em questão, com o conteudo abaixo:

  2. 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"
Enter fullscreen mode Exit fullscreen mode

Referências e links úteis

Make Docs
Introdução ao Makefile
Samples Makefile
repo from example in the post

Top comments (2)

Collapse
 
zodman profile image
Andres 🐍 in 🇨🇦

dont mess too complex. Use bake-cli in python instead!

Collapse
 
mayronceccon profile image
Mayron Ceccon

Muito bom. O make facilita muito a utilização de comandos no projeto.