holst-raytracer/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)"