minesweeper/Makefile.unix
2025-06-21 22:11:30 +03:00

54 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
# 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 $(BUILD_DIR))
# $(shell if not exist $(BUILD_DIR)/debug mkdir $(BUILD_DIR)/debug)
# $(shell $(BUILD_DIR)/release)
# phony rules
.PHONY := all debug release clean
all: debug
debug: $(BIN_DIR)/debug
release: $(BIN_DIR)/release
both: debug release
# linking
$(BIN_DIR)/debug: $(DBG_OBJS)
$(CXX) -o $@ $^ $(DBG_LDFLAGS)
$(BIN_DIR)/release: $(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)
rm $(BIN_DIR)/release $(BIN_DIR)/debug