44 lines
933 B
Makefile
44 lines
933 B
Makefile
|
|
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"
|