当前位置:网站首页>Makefile通用模板
Makefile通用模板
2022-08-09 15:00:00 【北雨南萍】
###################################################################
# 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,[email protected])
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)
边栏推荐
猜你喜欢

Unity Shader零基础入门2:环境光、漫反射、高光

Vim practical skills_4. Manage multiple files (open + split + save + netrw)

将类指针强制转换为void*指针进行传参的使用方法

【力扣】17. 电话号码的字母组合

websocket协议详解与抓包分析

图论最短路径求解

【工具使用】Modbus Poll软件使用详解

Time series analysis

Heap series _0x02: The past and present of the heap (WinDbg+Visual Studio compilation)

堆(heap)系列_0x08:NT堆调试支持_立刻发现调试支持(DPH)
随机推荐
【力扣】1154. 一年中的第几天
【力扣】617. 合并二叉树
模糊综合评价
SVM支持向量机——MATLAB在数学建模中的应用
如何不使用第三个变量来交换两个数的值
hugging face tutorial - Chinese translation - sharing custom model
指针常量和常量指针和类中的const
流体拓扑优化问题
嵌入式三级笔记
Visual Studio 2019新手使用(安装并创建第一个程序详细教程)
配置 vscode 让它变得更好用
【工具使用】Modscan32软件使用详解
Gray Relevance Matrix——Application of MATLAB in Mathematical Modeling
在任务管理器中结束任务进程之后电脑直接黑屏了
CTF在线加解密以及常用工具
基于MySQL的数据在线管理系统
Unity Shader零基础入门3:逐像素光照、Blinn-Phong、透明度
使用NATS及其nats.c客户端简单示例用法(nats.c的API接口)
Heap series _0x02: The past and present of the heap (WinDbg+Visual Studio compilation)
The practical skills Vim _5. Move quickly between files and documents