minesweeper/Makefile.unix
thorium1256 84972ed9bb silly makefile stuff
makefile realization

makefile insanity

makefile madness

readme update to fit in with actual makefile
2025-06-25 20:48:44 +03:00

56 lines
1.2 KiB
Makefile

# compiler stuff
CXX := c++
CXXFLAGS := -I include -std=c++11 -Wall -Wextra
DBG_CXXFLAGS := $(CXXFLAGS) -g
RLS_CXXFLAGS := $(CXXFLAGS) -O2
# linker stuff
LDFLAGS := -lncursesw
DBG_LDFLAGS := $(LDFLAGS)
RLS_LDFLAGS := $(LDFLAGS) -s
# directories
BUILD_DIR := build
SRC_DIR := src
BIN_DIR := bin
DBG_DIR := $(BIN_DIR)/debug
RLS_DIR := $(BIN_DIR)/release
DBG_EXEC := $(DBG_DIR)/debug
RLS_STRIPPED_EXEC := $(RLS_DIR)/tuimine
# sources and objects
SRCS := $(wildcard $(SRC_DIR)/*.cpp)
DBG_OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/debug_%.o,$(SRCS))
RLS_OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/release_%.o,$(SRCS))
$(shell mkdir -p $(BIN_DIR))
$(shell mkdir -p $(DBG_DIR))
$(shell mkdir -p $(RLS_DIR))
$(shell mkdir -p $(BUILD_DIR))
# phony rules
.PHONY := all debug release clean
all: release
debug: $(DBG_EXEC)
release: $(RLS_STRIPPED_EXEC)
both: debug release
# linking
$(DBG_EXEC): $(DBG_OBJS)
$(CXX) -o $@ $^ $(DBG_LDFLAGS)
$(RLS_STRIPPED_EXEC): $(RLS_OBJS)
$(CXX) -o $@ $^ $(RLS_LDFLAGS)
# compiling
$(BUILD_DIR)/debug_%.o: $(SRC_DIR)/%.cpp
$(CXX) -c -o $@ $< $(DBG_CXXFLAGS)
$(BUILD_DIR)/release_%.o: $(SRC_DIR)/%.cpp
$(CXX) -c -o $@ $< $(RLS_CXXFLAGS)
clean:
rm -rf $(BUILD_DIR) $(DBG_DIR) $(RLS_DIR)