Skip to content
Snippets Groups Projects
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)