Makefile 递归获取某一类文件

代码:

SRC_EXT = c
SRC_PATH = test
rwildcard = $(foreach d, $(wildcard $1*), $(call rwildcard,$d/,$2) \
						$(filter $2, $d))
SOURCES := $(call rwildcard, $(SRC_PATH), %.$(SRC_EXT))
all:
	@echo "SOURCES=$(SOURCES)"

其中 SRC_EXT表示该类文件的后缀名,SRC_PATH为需要递归查询的目录,这段代码的意思就是递归查询目录test下的所有.c文件

makefile 中,递归表达式是指一个变量的值取决于其他变量的值,而这些变量的值又取决于其他变量的值,以此类推,形成了一种递归的依赖关系。在 makefile 中,我们可以使用递归表达式来定义变量的值,这样可以使得变量的值更加灵活和可控。 下面是一个简单的例子,其中变量 B 的值依赖于变量 A 的值: ``` A = hello B = $(A) world ``` 在这个例子中,变量 B 的值是由变量 A 的值和字符串“world”组成的。因此,如果我们将变量 A 的值修改为“goodbye”,那么变量 B 的值也会随之发生变化。 在 makefile 中,递归表达式可以嵌套使用,形成更加复杂的依赖关系。例如,在下面的例子中,变量 C 的值依赖于变量 B 的值,而变量 B 的值又依赖于变量 A 的值: ``` A = foo B = $(A) bar C = $(B) baz ``` 在这个例子中,变量 C 的值是由变量 A 的值、字符串“bar”和字符串“baz”组成的。因此,如果我们将变量 A 的值修改为“qux”,那么变量 B 和变量 C 的值也会随之发生变化。 需要注意的是,在定义递归表达式时,我们需要确保表达式最终会收敛到一个确定的值,否则可能会导致无限递归的情况。此外,如果我们在定义递归表达式时使用了一个未定义的变量,那么这个表达式的值将会是空字符串。因此,在使用递归表达式时,我们需要保证所有的依赖关系都已经被明确地定义了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值