makefile之通配符扩展

本文介绍了Makefile中通配符的基本用法及其扩展时机,包括目标、依赖及命令中的通配符处理方式,并通过一个具体示例展示了通配符在不同场景下的表现。

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

makefile中使用通配符的注意点

关于makefile中的通配符话题其实很简单,在使用时心中知道以下几点就OK。

(1)makefile中的通配符与通常的shell通配符是一样的。

通配符匹配
?任何的单一字符
*任何的字符字符串
[set]任何在set里的字符
[!set]任何不在set里的字符

(2)通配符扩展发生的时机。通配符扩展发生在如下时刻:

① 在规则的目标、依赖中的通配符,make在读取Makefile时会自动为其进行匹配处理(即展开)

② 在命令中的通配符不需要make来操心,它们最总由shell来展开。

③ 除上面两点之外的地方(如变量定义),不能直接使用通配符,只能通过函数wildcard来达到目的


以下,通过一个简单的例子来感受下:

目录结构如下:


Makefile内容如下:


运行结果如下:

# make 

cc.c
bb.c
aa.c
cc.o bb.o aa.o
cc.c bb.c aa.c
%.c
aa.c bb.c cc.c
aa.c bb.c cc.c

可以看到尽管在变量定义中使用了通配符,但是在规则中依然正确扩展了。不过其中的src2中的%,shell是不认识的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值