Makefile通用模板

这篇博客详细介绍了C++的Makefile模板,包括可执行程序名称、库路径、编译选项等设置。通过示例展示了如何查找和编译源文件,以及清理目标文件。此外,还提供了编译过程中的依赖管理,确保编译的正确性和效率。
摘要由CSDN通过智能技术生成

###################################################################
# Desc: C++的Makefile模板

###################################################################
# 可执行程序的名称
EXECUTABLE = app_name
# 库的路径
LIBDIR     = ./
# 第三方库
LIBS       = pthread dl crypto ssl 
# 头文件路径
INCLUDES   = ./
# 源文件路径,使用shell命令查找当前目录和子目录
SRCDIR     = $(shell find . -maxdepth 1 \( -type d -o -type l \) -name obj ! -name output ! -name test)
#
# 编译选项设置
CC  = gcc
CXX = g++
CFLAGS    = -g -Wall -O3
CPPFLAGS  = $(CFLAGS)
CPPFLAGS += $(addprefix -I, $(INCLUDES))
CPPFLAGS += -MMD
#
#
RM-F  = rm -f
MKDIR = mkdir
### 
# wildcard : 扩展通配符,获得目录下所有的指定后缀的文件 
# notdir   :去除路径, 去掉不需要的路径 
# patsubst :替换通配符:  将.cpp 替换成 .o
# addsuffix:添加前缀: 将/*.cpp 前面加上路径 
###
#
SRCS  = $(wildcard $(addsuffix /*.cpp, $(SRCDIR)))
OBJS  = $(patsubst %.cpp,%.o,$(SRCS))
DEPS  = $(patsubst %.o,%.d,$(OBJS))
MISSING_DEPS  = $(filter-out $(wildcard $(DEPS)),$(DEPS))
MISSING_DEPS_SOURCES = $(wildcard $(patsubst %.d,%.cpp,$(MISSING_DEPS)))
#
#
.PHONY : all deps objs clean veryclean rebuild info
#
all: $(EXECUTABLE)

deps : $(DEPS)

objs : $(OBJS)

clean :
    @$(RM-F) *.o
    @$(RM-F) *.d
veryclean: clean
    @$(RM-F) $(EXECUTABLE)

rebuild: veryclean all
ifneq ($(MISSING_DEPS),)
$(MISSING_DEPS) :
    @$(RM-F) $(patsubst %.d,%.o,$@)
endif
-include $(DEPS)
$(EXECUTABLE) : $(OBJS)
    $(CXX) $(CPPFLAGS) -o $(EXECUTABLE) $(OBJS) $(addprefix -L,$(LIBDIR)) $(addprefix -l,$(LIBS))
#
# 用于检查路径
info:
    @echo $(SRCS)
    @echo $(OBJS)
    @echo $(DEPS)
    @echo $(MISSING_DEPS)
    @echo $(MISSING_DEPS_SOURCES)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北雨南萍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值