-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
59 lines (41 loc) · 1.28 KB
/
Copy pathMakefile
File metadata and controls
59 lines (41 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
CXX := g++
CXXFLAGS := -std=c++17 -Wall -Wextra -Iinclude -Weffc++
SRC_DIR := src
INC_DIR := include
BUILD_DIR := builds
TEST_DIR := test
SRCS := $(wildcard $(SRC_DIR)/*.cpp)
OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRCS))
DBG_OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.dbg.o,$(SRCS))
PERFT_SRC := $(TEST_DIR)/perft.cpp
PERFT_OBJ := $(BUILD_DIR)/perft.o
TARGET := $(BUILD_DIR)/main
DEBUG_TARGET := $(BUILD_DIR)/mainDebug
PERFT_TARGET := $(BUILD_DIR)/perft
all: release
release: $(TARGET)
$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) -Ofast -o $@ $^
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
@mkdir -p $(BUILD_DIR)
$(CXX) $(CXXFLAGS) -Ofast -c $< -o $@
debug: $(DEBUG_TARGET)
$(DEBUG_TARGET): $(DBG_OBJS)
$(CXX) $(CXXFLAGS) -g -O0 -o $@ $^
$(PERFT_TARGET): $(PERFT_OBJ) $(filter-out $(BUILD_DIR)/main.o, $(OBJS))
$(CXX) $(CXXFLAGS) -Ofast -o $@ $^
$(BUILD_DIR)/%.dbg.o: $(SRC_DIR)/%.cpp
@mkdir -p $(BUILD_DIR)
$(CXX) $(CXXFLAGS) -g -O0 -c $< -o $@
$(BUILD_DIR)/perft.o: $(PERFT_SRC)
@mkdir -p $(BUILD_DIR)
$(CXX) $(CXXFLAGS) -Ofast -c $< -o $@
clean:
rm -rf $(BUILD_DIR)/*.o $(BUILD_DIR)/*.dbg.o $(TARGET) $(DEBUG_TARGET)
run: release
./$(TARGET)
run-debug: debug
./$(DEBUG_TARGET)
run-perft: $(PERFT_TARGET)
./$(PERFT_TARGET)
.PHONY: all release debug clean run run-debug