CXX := g++ CXXFLAGS := -std=c++20 -Wall -Wextra -g -Iinclude -I/c/msys64/mingw64/include LDFLAGS := -lws2_32 SRC_DIRS := src BUILD_DIR := build # Find all source files SRC := $(foreach dir, $(SRC_DIRS), $(wildcard $(dir)/*.cpp)) OBJ := $(patsubst %.cpp, $(BUILD_DIR)/%.o, $(SRC)) TARGET := main.exe all: $(TARGET) $(TARGET): $(OBJ) $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(BUILD_DIR)/%.o: %.cpp @mkdir "$(dir $@)" || exit 0 $(CXX) $(CXXFLAGS) -c $< -o $@ clean: del /Q /S $(subst /,\,$(BUILD_DIR)\*.o) $(TARGET) 2>nul || exit 0 rmdir /S /Q $(BUILD_DIR) 2>nul || exit 0 .PHONY: all clean