CFLAGS := -Isrc -MMD -MP -Wall -Wextra LDFLAGS := TARGET = build/bfc TARGET_SRC := $(shell find src -name "*.c") TARGET_OBJ := $(patsubst src/%.c, build/%.o, $(TARGET_SRC)) TARGET_DEP := $(patsubst build/%.o, build/%.d, $(TARGET_OBJ)) all: build $(TARGET) build: mkdir -p $(sort $(dir $(TARGET_OBJ))) $(TARGET): $(TARGET_OBJ) $(CC) $(LDFLAGS) $(TARGET_OBJ) -o $@ -include $(TARGET_DEP) build/%.o: src/%.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -rf build .PHONY: build clean