Makefile 中的通配符函数,不带'*'或'?'



正如我所知,Makefile中的$wildcard函数用于扩展*或?。例如,

$(wildcard *.c)  

扩展到所有扩展名为.c的文件。但在linux Makefile中,我看到了许多没有*或?的通配符函数实例?。例如

ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)

为什么我们不能只做

ARCH_POSTLINK := $(srctree)/arch/$(SRCARCH)/Makefile.postlink

我不认为$(srctree(和$(SRCACH(在这里被扩展为多个值。

除了扩展globbing字符外,wildcard还可以用于确定文件是否存在。

ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)

这里ARCH_POSTLINK被设置为$(srctree)/arch/$(SRCARCH)/Makefile.postlink,当且仅当该文件存在;否则它被设置为空字符串。

ARCH_POSTLINK := $(srctree)/arch/$(SRCARCH)/Makefile.postlink

这里ARCH_POSTLINK被设置为$(srctree)/arch/$(SRCARCH)/Makefile.postlink,而不管该文件是否存在。

最新更新