38 lines
763 B
Makefile
38 lines
763 B
Makefile
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)"
|