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