TARGET := program SRC = \ $(wildcard src/*.cpp) \ $(wildcard src/*.hpp) \ BUILD := build OBJECTS := $(patsubst src/%.cpp,$(BUILD)/%.o,$(SRC)) CXX := g++ CXXFLAGS := -std=c++11 -pedantic-errors -Wall -Wextra -Werror LDFLAGS := -lstdc++ -lm -lGL -lGLEW -lSDL2 INCLUDE := -Iinclude/ all: $(BUILD)/$(TARGET) $(BUILD)/%.o: src/%.cpp @mkdir -p $(@D) $(CXX) $(CXXFLAGS) $(INCLUDE) -c $< -o $@ $(BUILD)/$(TARGET): $(OBJECTS) @mkdir -p $(@D) $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) .PHONY: all run build clean debug release run: all @./$(BUILD)/$(TARGET) debug: CXXFLAGS += -DDEBUG -g debug: all release: CXXFLAGS += -O2 release: all clean: -@rm -rvf $(BUILD)