makefile 模板范例
#输出文件
OUT_NAME=xx
#输出目标路径
OUT_PATH=../bin/
#输出中间文件路径
OBJ_PATH=./obj/
# 通过源代码cpp文件 对应到.o文件
#源代码目录,可以是多个
SRC_PATHS=./
#源代码文件, 匹配源代码目录下的cpp文件
SRC_FILES=$(foreach SUB_DIR, $(SRC_PATH), $(wildcard $(SUB_DIR)*.cpp))
#目标文件, 将文件后缀.cpp文替换为.o
OBJ_FILES=$(patsubst %.cpp,%o, $(notdir $(SRC_FILES)))
#编译输出的中间文件,多个文件 debug
OBJ_DEBUG_FILES=$(addprefix $(OBJ_PATH), $(OBJ_FILES))
# 通过源代码cpp文件 对应到.o文件
#编译输出的目标文件 debug
OUT_DEBUG_FILE=$(OUT_PATH)$(OUT_NAME)
#第一个标签,默认debug版本
debug : pre_mkdir $(OUT_DEBUG_FILE)
# 生成 elf debug
$(OUT_DEBUG_FILE) : $(OBJ_DEBUG_FILES)
g++ -g -Wall $^ -o $@
# 编译成目标文件 debug
# $(OBJ_PATH)%.o 和 前面的 OBJ_DEBUG_FILES 匹配
$(OBJ_PATH)%.o : %.cpp
g++ -c -g -Wall $^ -o $@
clean :
@echo "make clean"
-$(shell rm $(OBJ_PATH) -rf)
-$(shell rm $(OUT_PATH)$(OUT_NAME) -f)
pre_mkdir:
-$(shell mkdir $(OBJ_PATH) -P)
-$(shell mkdir $(OUT_PATH) -P)