Blog

ES
Aprende a usar Makefiles

Aprende a usar Makefiles

4 min de lectura

Los Makefiles son archivos ubicados en la raíz de un proyecto que permiten automatizar y simplificar la ejecución de comandos en la terminal. Esto ahorra tiempo y también mejora la consistencia en los flujos de trabajo, facilitando la colaboración entre miembros del equipo y reduciendo errores por comandos mal escritos o incompletos.

¿Qué es un Makefile?

Este es un archivo de texto llamado Makefile en la raíz de nuestro proyecto que contiene una serie de comandos a ejecutar desde la terminal. Es una herramienta de automatización especialmente cuando se utilizan comandos repetitivos, para hacer uso de esa herramienta es necesario tener instalado el software make que generalmente ya viene instalado en los sistemas Unix/Linux.

¿Cómo se estructura un Makefile?

La estructura básica de un Makefile es la siguiente:

target:
  command
  • target: Es el nombre del comando que vas a usar.
  • command: Es la instrucción que realmente se ejecutará en la terminal.

Por ejemplo:

run:
    python app.py

Si ejecutas make run en la terminal, se ejecutará python app.py.

Además, puedes usar variables para organizar mejor tu archivo:

PYTHON = python
MANAGE = $(PYTHON) manage.py

¿Dónde se puede usar?

Un Makefile es muy útil para mejorar el flujo de trabajo en un proyecto. Es ideal cuando hay comando muy largos y repetitivos en el proyecto, por ejemplo con Docker. En lugar de recordarlos cada vez, los guardas en un Makefile y solo necesitas ejecutar make <command>.

Aquí tienes un ejemplo de un Makefile usado en un proyecto con Django:

PYTHON = python
MANAGE = $(PYTHON) manage.py # Default target
.DEFAULT_GOAL := help

help:
    @echo "Available targets:"
    @echo "  run         : Run the Django development server"
    @echo "  test        : Run Django tests"
    @echo "  migrate     : Run Django migrate"
    @echo "  lint        : Lint the code using Black and pep8"

run:
    $(MANAGE) runserver --settings=todoapp.settings.ci

test:
    $(MANAGE) test --settings=todoapp.settings.ci

migrate:
    $(MANAGE) migrate --settings=todoapp.settings.ci

lint:
    @echo "Linting with flake8..."
    ${PYTHON} -m flake8 .

format:
    @echo "Linting with Black..."
    ${PYTHON} -m black .

Un Makefile no es complicado de aprender y puede ahorrarte mucho tiempo. En lugar de memorizar comandos largos, simplemente los defines una vez y luego solo escribes make <comando>.

Comparte este artículo en

Avatar byandrev

Andres Parra

Software Engineer

Soy Andrés Parra, Ingeniero de Software apasionado por crear soluciones tecnológicas escalables e innovadoras. Me especializo en la construcción de aplicaciones web modernas, dominando un stack versátil que incluye JavaScript, TypeScript, Python y Java, junto con frameworks como React, Next.js y Spring Boot. Interesado en las últimas tecnologías y herramientas de desarrollo.