Cómo se usa
- Elige el tipo de proyecto y escribe el nombre del programa.
- Marca los objetivos que necesitas. Al principio están todos menos
lint. - Copia el resultado en un archivo llamado
Makefileen la raíz del proyecto. - Ejecuta
make,make test,make cleanomake 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,
builddepende de$(TARGET), que se enlaza a partir de los archivos objeto; una regla de patrón%.o: %.ccompila cada fuente desrc/.
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 diren una línea no afecta a la siguiente; escribecd dir && comando.