DEV Community

Cover image for Produtividade com Makefile
Antonio Motta
Antonio Motta

Posted on

3 1

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

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full 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.

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More