CC = gcc CFLAGS = -Wall -g SRCDIR = src BUILDDIR = build TARGET = main SOURCES = $(wildcard $(SRCDIR)/*.c) OBJECTS = $(patsubst $(SRCDIR)/%.c, $(BUILDDIR)/%.o, $(SOURCES)) all: $(BUILDDIR)/$(TARGET) $(BUILDDIR)/$(TARGET): $(OBJECTS) $(CC) $(CFLAGS) -o $@ $^ $(BUILDDIR)/%.o: $(SRCDIR)/%.c @mkdir -p $(BUILDDIR) $(CC) $(CFLAGS) -c -o $@ $< clean: rm -rf $(BUILDDIR)/* .PHONY: clean