CXX := g++ CPP_STD := 17 CPP = c++ PRJ_NAME = run PRJ_HEADERS_DIR := $(CURDIR)/headers SRC_DIR := $(CURDIR)/src CXX_FLAGS := -Wall -I$(PRJ_HEADERS_DIR) -std=$(CPP)$(CPP_STD) -g LDFLAGS = OUTPUT_DIR := $(CURDIR)/output BUILD_DIR := $(CURDIR)/build SRCS := $(wildcard $(SRC_DIR)/*.cc) OBJS := $(patsubst $(SRC_DIR)/%.cc, $(BUILD_DIR)/%.o, $(wildcard $(SRC_DIR)/*.cc)) TARGET = $(OUTPUT_DIR)/$(PRJ_NAME) all: $(TARGET) $(TARGET): $(OBJS) $(CXX) -o $@ $^ $(LDFLAGS) $(BUILD_DIR)/%.o: $(SRC_DIR)/%.cc $(CXX) $(CXX_FLAGS) -c $< -o $@ run: all @echo "----start exec project------" @$(TARGET) clean: @rm -f $(OBJS) $(TARGET) full_clean: @rm -rf $(BUILD_DIR)/* && rm -rf $(OUTPUT_DIR)/* .PHONY: all clean help help: @echo "usage as follows:\n"\ "make all\t--> compiler all and run\n"\ "make run\t--> make and run\n"\ "make clean\t--> make clean the compiling stuff\n"\ "make full_clean\t--> rm all make related files\n"