Makefile中的wildcard杂记

时间:2024-06-01 11:41:22

关于在Makefile中的wildcard的一些记录和说明。

wildcard是一个扩展通配符,它的作用是什么呢?
在Makefile规则中,通配符会被自动展开,但是遇到变量定义和函数引用是会失效,在这钟情况下如果想要通配符有效就需要用到wildcard,
用法规则:$(wildcard, PATTERN…)
在Makefile中,他被展开为已存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中通配符的展开和上一小节匹配通配符的区别。

下面针对wildcard我做了一个小实验来验证他的功能用法
新建一个my_practice的文件夹,在下面创建a.c b.c,以及该路径的文件夹以及文件common/Buildutils/makefile/GCC_rules.include,再创建一个Makefile
首先验证通配符匹配当前文件夹下的C文件
Makefile中的wildcard杂记
执行之后的结果:
Makefile中的wildcard杂记
可以将当前文件下的C文件匹配打印出来。
当前文件夹的位置为./

匹配./common/Buildutils/makefile/GCC_rules.include文件,文件存在的情况。
Makefile中的wildcard杂记
Makefile中的wildcard杂记

执行结果
Makefile中的wildcard杂记
此时GCC_rules.include文件存在,因此可以匹配到这个路径下的该文件,若删除该文件,即该文件不存在的话,结果为空。
Makefile中的wildcard杂记
Makefile中的wildcard杂记
执行之后结果
Makefile中的wildcard杂记
此时echo出来的是wildcard匹配之后为空的结果,可以看到命令框里打印的结果为空。

以上内容仅作为练习验证记录所用。