CXX = g++
CXXFLAGS = -std=c++17 -Wall -Wextra -O2
SRC_DIR = src
OBJ_DIR = obj
BIN_DIR = bin
TARGET = $(BIN_DIR)/calcx
SRCS = $(wildcard $(SRC_DIR)/*.cpp)
OBJS = $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(SRCS))
all: directories $(TARGET)
directories:
@mkdir -p $(SRC_DIR)
@mkdir -p $(OBJ_DIR)
@mkdir -p $(BIN_DIR)
$(TARGET): $(OBJS)
@echo "[Make Agent] Linking $(TARGET)..."
$(CXX) $(CXXFLAGS) -o $@ $^
@echo "[Make Agent] Build successful! Run with ./$(TARGET)"
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
@echo "[Make Agent] Compiling $<..."
$(CXX) $(CXXFLAGS) -c $< -o $@
clean:
@echo "[Make Agent] Cleaning up build files..."
rm -rf $(OBJ_DIR) $(BIN_DIR)
grid_verify: clean all
@echo "[Make Agent] Verification build complete."
.PHONY: all directories clean grid_verify