PROGRAM = program CC = gcc CXX = g++ CPPFLAGS = -Wall CXXFLAGS = -std=c++20 -O2 LDFLAGS = LDLIBS = -lglfw -lvulkan -ldl -lpthread -lX11 -lXxf86vm -lXrandr -lXi DEPFLAGS = -MMD -MP # remark : I'm not really sure what DEPFLAGS stuff does... SRCS := $(shell find src -name '*.cc') OBJS := $(patsubst src/%.cc, build/%.o, $(SRCS)) DEPS := $(OBJS:%.o=%.d) all: $(OBJS) @echo === LINKING $(PROGRAM) $(CXX) $(CXXFLAGS) -o $(PROGRAM) $(OBJS) $(LDFLAGS) $(LDLIBS) build/%.o: src/%.cc @echo === COMPILING $@ mkdir -p $(dir $@) $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $< run: all ./$(PROGRAM) clean: rm -f $(OBJS) $(DEPS) $(PROGRAM) .PHONY: run clean -include $(DEPS)