CC := gcc CFLAGS := -Wall -Wextra -std=c11 -O2 LDFLAGS := BINDIR := bin SOURCES := $(wildcard src/*.c) HEADERS := $(wildcard src/*.h) TARGETS := $(patsubst src/%.c,$(BINDIR)/%,$(SOURCES)) .PHONY: all clean all: $(TARGETS) clean: find $(BINDIR) -maxdepth 1 -type f -delete $(TARGETS): bin/%: src/%.c $(HEADERS) @mkdir -p $(dir $@) $(CC) $(CFLAGS) -o $@ $<