CXX := g++ SRC_DIR := src BUILD_DIR := build TARGET := $(BUILD_DIR)/holst STD ?= c++23 CXXFLAGS := -std=$(STD) -g -Wall -Wextra -O2 -Iinclude LDFLAGS := LDLIBS := -lSDL2 # Source files and object files SRCS := $(shell find $(SRC_DIR) -name '*.cpp') OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRCS)) # Default target all: $(TARGET) # Link final executable $(TARGET): $(OBJS) @mkdir -p $(dir $@) $(CXX) $(OBJS) -o $@ $(LDFLAGS) $(LDLIBS) # Compile source files $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp @mkdir -p $(dir $@) $(CXX) $(CXXFLAGS) -c $< -o $@ # Clean build files clean: rm -rf $(BUILD_DIR) # Print configuration (debugging) print: @echo "Compiler: $(CXX)" @echo "Standard: $(STD)" @echo "Sources: $(SRCS)" @echo "Objects: $(OBJS)"