Generador de Makefile

Elige el stack y los objetivos que quieres y copia un Makefile con tabuladores reales en las recetas. Así make, make test y make clean funcionan igual en todos los proyectos, sean cuales sean las herramientas de debajo.

El binario, el módulo de Python o solo un nombre. Solo letras sin tilde, cifras, . _ -

Guárdalo como Makefile (sin extensión) en la raíz del proyecto. Las líneas de receta empiezan con un tabulador: consérvalo al editar o pegar.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo se usa

  1. Elige el tipo de proyecto y escribe el nombre del programa.
  2. Marca los objetivos que necesitas. Al principio están todos menos lint.
  3. Copia el resultado en un archivo llamado Makefile en la raíz del proyecto.
  4. Ejecuta make, make test, make clean o make help.

Cómo funciona

El archivo tiene tres partes:

  • Variables: las herramientas con ?= para poder sobrescribirlas (CC ?= cc, GO ?= go, NPM ?= npm, PYTHON ?= python3) y el nombre del programa con :=.
  • .PHONY: todos los objetivos elegidos, para que ningún archivo con el mismo nombre los bloquee.
  • Objetivos: una línea de regla y una o más líneas de receta sangradas con tabulador. En C, build depende de $(TARGET), que se enlaza a partir de los archivos objeto; una regla de patrón %.o: %.c compila cada fuente de src/.

El objetivo help imprime con grep los nombres de objetivos que encuentra en el propio Makefile, así que sigue siendo correcto cuando añades objetivos.

Ejemplo

Los valores por defecto (Go, nombre app) dan:

GO ?= go
BINARY := app

.PHONY: build test run install clean help

build:
	$(GO) build -o bin/$(BINARY) .

test:
	$(GO) test ./...

run:
	$(GO) run .

install:
	$(GO) mod download

clean:
	rm -rf bin

help:
	@grep -E '^[a-zA-Z_-]+:' $(MAKEFILE_LIST) | cut -d: -f1

Consejos

  • Una @ al principio de una línea de receta oculta el comando y deja solo su salida.
  • Escribe $$ para un símbolo de dólar que deba ver la shell: un $ solo pertenece a make.
  • Cada línea de receta se ejecuta en su propia shell, así que cd dir en una línea no afecta a la siguiente; escribe cd dir && comando.

Preguntas frecuentes

¿Por qué las líneas de receta deben empezar con tabulador?

make usa el carácter de tabulación para distinguir los comandos de las reglas. Con espacios da el error «missing separator». El archivo generado lleva tabuladores reales; algunos editores los convierten en espacios al pegar, así que revisa ese ajuste.

¿Qué hace .PHONY?

Indica a make que un objetivo es el nombre de una acción, no un archivo. Sin él, un archivo o carpeta llamado test o build en el proyecto haría creer a make que el objetivo está al día y lo saltaría.

¿Qué objetivo se ejecuta si escribo solo make?

El primero del archivo. El generador pone build primero, así que make compila el proyecto. Las reglas de enlazado y compilación de C van después de build para no convertirse en el objetivo por defecto.

¿Qué significa ?=?

Asignar la variable solo si aún no tiene valor. Así se puede sobrescribir desde la línea de comandos o el entorno, por ejemplo make CC=clang o GO=go1.22 make test.

¿Qué hace install?

En C copia el programa a $(DESTDIR)$(PREFIX)/bin, /usr/local/bin por defecto, como suelen hacer los programas de Unix. En Go, Node.js y Python instala las dependencias: go mod download, npm ci, pip install -r requirements.txt.

Más en Desarrollo

Todas las herramientas de la categoría: Desarrollo ·Actualizado el 4 de noviembre de 2026

Opciones de privacidad

Google Analytics nos muestra qué herramientas se usan y si funcionan. Puede usar cookies. Tu elección se guarda en este navegador.