Makfile笔记——patsubst函数、foreacch函数、wildcard函数

本文详细介绍了Makefile中的三个重要函数:patsubst用于查找并替换文本中的模式;wildcard用于获取当前目录下匹配特定模式的所有文件;foreach则是一个循环函数,用于遍历列表并执行指定操作。通过实例解析了它们的具体用法及其在构建编译过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

patsubst函数:

功能:查找text中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式pattern,如果匹配的话,则以replacement替换。
这里,pattern可以包括通配符“%”,表示任意长度的字串。如果replacement中也包含“%”,那么,replacement中的这个“%”将是pattern中的那个“%”所代表的字串。(可以用“\”来转义,以“%”来表示真实含义的“%”字符)。

例如:INCDIRS := imx6ul bsp/clk bsp/led bsp/delay
INCLUDE := $(patsubst %, -I %, $(INCDIRS))
效果:INCDIRS :=-I imx6ul -I bsp/clk -I bsp/led -I bsp/delay


wildcard函数:

功能:$(wildcard PATTERN),获取匹配 PATTERN 的所有对象,返回值为当前目录下匹配PATTERN条件的使用空格作为间隔的列表。

例如:SRC = $(wildcard *.c),获取当前目录下的.c文件并以空格为间隔。


foreach函数:

功能:Makefile常用循环函数,函数常用格式: $(foreach var, list, text),该函数从list参数中逐一取出var参数中,然后执行text表达式,每次返回一个字符串,最后返回值为以空格为间隔的之前单次循环的所有字符串集合。

例如:SRCDIRS := project bsp/clk bsp/led bsp/delay
SFILES := $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.S))

效果:将SRCDIRS中的元素逐一读出到dir,然后执行$(wildcard $(dir)/*.S)),最终效果就是将SRCDIRS中的所有.S文件读出并以空格间隔


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值