-
Alfred Burgess authorede9c193f4
makefile 1.18 KiB
# Makefile for Simple Game
# Compiler
CXX = g++
# Compiler flags
CXXFLAGS = -std=c++17 -Wall -Wreorder -g
# Source directory
SRC_DIR = src
# Include directory
INC_DIR = include
# Object files directory
BUILD_DIR = build
# Test directory
TEST_DIR = test
# Executable directory
BIN_DIR = bin
# Source files
SRC_FILES = $(wildcard $(SRC_DIR)/**/*.cpp $(SRC_DIR)/*.cpp )
SRC_FILES_ = $(wildcard $(SRC_DIR)/*.cpp)
# Test Files
TEST_FILES = $(wildcard $(TEST_DIR)/**/*.test.cpp $(TEST_DIR)/*.test.cpp)
# Object files
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRC_FILES))
TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.cpp,$(BUILD_DIR)/%.o,$(TEST_FILES))
# Output executable
TARGET = $(BIN_DIR)/game
all: $(TARGET)
$(TARGET): $(OBJ_FILES)
$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJ_FILES)
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) -I$(INC_DIR) -c -o $@ $<
clean:
rm -rf $(BIN_DIR)/* $(BUILD_DIR)/* test_runnr
rm -rf ./*~ ./*.swp
run_tests: $(TEST_OBJ_FILES)
$(CC) $(CFLAGS) $(INC_DIRS) -o test_runner $^
./test_runner
$(BUILD_DIR)/%.o: $(TEST_DIR)/%.test.cpp
@mkdir -p $(@D)
$(CC) $(CFLAGS) $(INC_DIRS) -c -o $@ $<
run: $(TARGET)
./$(TARGET)