PureDevTools

Makefile Generator

Generate well-structured Makefiles with build, test, Docker, and deploy targets — nothing sent to any server

All processing happens in your browser. No data is sent to any server.

Project Type

npm/yarn project with build, test, lint

Project Settings

Variables

Define Makefile variables (override with make VAR=value)

?=

Targets

target
$
target
$
target
$
target
$
target
$
target
$
target
$

Makefile

# Makefile for myproject
# Generated by PureDevTools Makefile Generator

NODE_ENV ?= development

.PHONY: install dev build test lint clean start help

.DEFAULT_GOAL := help

install: ## Install dependencies
	npm install

dev: ## Start development server
	npm run dev

build: ## Build for production
	NODE_ENV=production npm run build

test: ## Run tests
	npm test

lint: ## Run linter
	npm run lint

clean: ## Remove build artifacts and node_modules
	rm -rf node_modules dist build .next

start: ## Start production server
	npm start

help: ## Show this help message
	@echo "Usage: make [target]"
	@echo ""
	@echo "Targets:"
	@grep -E '^[a-zA-Z_-]+:.*## ' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*## "}; {printf "  \033[36m%-20s\033[0m %s\n", $$1, $$2}'

Writing a Makefile from scratch means remembering tab-vs-space rules, target syntax, variable conventions, and .PHONY declarations. This tool generates a well-structured Makefile from your project settings — select your language, add targets, define variables, and get a ready-to-use file with proper formatting.

Why Use Make in 2026

Make is 50 years old and still the most universal build automation tool:

What Gets Generated

Configure your Makefile with:

How to Use

  1. Select your project type from the presets
  2. Add or remove targets as needed
  3. Define variables and their default values
  4. Set target dependencies
  5. Copy the generated Makefile to your project root

Example Output

.PHONY: all build test clean run help

APP_NAME := myapp
VERSION  := $(shell git describe --tags --always)

all: build ## Build the application (default)

build: ## Compile the application
	go build -ldflags "-X main.version=$(VERSION)" -o bin/$(APP_NAME) .

test: ## Run tests
	go test -race -coverprofile=coverage.out ./...

clean: ## Remove build artifacts
	rm -rf bin/ coverage.out

run: build ## Build and run the application
	./bin/$(APP_NAME)

help: ## Show this help
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

Frequently Asked Questions

Does the generator use tabs or spaces? Tabs — as required by Make. The generated output uses real tab characters for recipe lines. If you copy-paste and your editor converts tabs to spaces, the Makefile will break.

Can I add custom shell commands to targets? Yes. Each target has a command editor where you can write arbitrary shell commands. They’re included verbatim in the generated Makefile.

Does it support multi-line commands? Yes. Commands that span multiple lines use backslash continuation (\) following standard Makefile syntax.

Is my Makefile sent to a server? No. All generation happens in your browser. Your project configuration never leaves your device.

Related Tools

More Docker & DevOps Tools