Makefile Generator
Generate well-structured Makefiles with build, test, Docker, and deploy targets — nothing 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
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:
- Zero dependencies — Pre-installed on every Linux and macOS system
- Language agnostic — Works with any language, framework, or toolchain
- Self-documenting —
make helplists available targets - Composable — Targets can depend on other targets
- CI-friendly — Every CI system supports
makecommands
What Gets Generated
Configure your Makefile with:
- Project type — Go, Python, Node.js, Rust, C/C++, or generic
- Common targets —
build,test,lint,clean,run,install - Docker targets —
docker-build,docker-run,docker-push - Deploy targets —
deploy-staging,deploy-production - Variables —
APP_NAME,VERSION,GO_FLAGS, custom variables - Dependencies — Target dependency chains
- Help target — Auto-generated
make helpfrom target comments .PHONYdeclarations — Automatically added for non-file targets
How to Use
- Select your project type from the presets
- Add or remove targets as needed
- Define variables and their default values
- Set target dependencies
- 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.