2020-08-12

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)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页