Makefile模板
一个简单实现的模板及其注释
一般使用 直接复制以下内容 修改下配置文件即可。
#makefile自整理规则
#1、规则语句前面是制表符TAB,写成空格会出错!
#2、赋值符号:=基本赋值,:=覆盖之前的指,?=如果没有值则赋值,+=继续添加后面的值。
#3、$@ 表示目标文件。 $^ 表示所有依赖项。 $< 表示第一个文件
模板如下
#定义编译器和连接器
CXX = g++
LD = g++
#wildcard的中文意思是通配符,它的功能类似于正则表达式,用于展开一列所有符合其参数描述的文件名,文件之间用空格分割。
SRCS = $(wildcard *.cpp)
#patsubst参数:第一个是需要匹配的样式,第二个是表示用什么替换它,第三个被处理的以空格隔开的字符串。
OBJS = $(patsubst %cpp, %o, $(SRCS))
# -I指定头文件目录
INCLUDE = -I./include
# -L指定库文件目录,-l指定静态库名字(去掉文件名中的lib前缀和.a后缀)
LIB = -L./libs -lname
# 开启编译warning和设置优化等级
#-O2这是一个程序优化参数,一般用-O2就是,用来优化程序用的,比如gcc test.c -O2,优化得到的程序比没优化的要小,执行速度可能也有所提升
CFLAGS = -Wall -O2
#可执行程序名称
TARGET = name
#.PHONY伪目标 防止存在clean和all文件 导致不执行更新
.PHONY:all clean
all: $(TARGET)
# 链接时候指定库文件目录及库文件名
# $@ 和 $< 是两个特殊的变量,$@的取值是当前规则中的目