Makefile学习

1、wildcard : 扩展通配符
2、notdir : 去除路径
3、patsubst :替换通配符


 建立一个简单的Makefile
src=$(wildcard *.c./sub/*.c)
dir=$(notdir $(src))
obj=$(patsubst%.c,%.o,$(dir) )

wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。

notdir把展开的文件去除掉路径信息

$(patsubst %.c,%.o,$(dir) )中,patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o

 

$^所有的依赖目标的集合,代表$(OBJS)。

$@表示规则中的目标文件集。

$<   依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。

$?   所有比目标新的依赖目标的集合。以空格分隔。

 

 例子:

SRCS=$(wildcard*.cpp)#当前目录下所有以.cpp结尾的源文件
OBJS:= $(patsubst%.cpp,%.o,$(SRCS))
CC=g++
INCLUDES=-I/usr/include
LIBS=-L /usr/lib-L /usr/lib64
JCDD=-lpthread
CCFLAGS=-g -Wall-O3#这里指定除了编译器默认的头文件和库文件的路径之外需要额外引##用的头文件路径以及库的路径
TARGET=app
$(TARGET) :$(OBJS)
      $(CC) $^ -o $@ $(INCLUDES) $(LIBS) $(JCDD)
%.o : %.c
      $(CC) -c $< $(CCFLAGS) $(INCLUDES)$(LIBS) $(JCDD)
 
.PHONY : clear
clear:
      rm -f $(OBJS)
      rm -f $(TARGET)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值