如何在make中进行vpath匹配后得到绝对路径?

时间:2010-01-12 14:06:43

标签: makefile filenames gnu-make vpath

我有一个makefile,根据某些属性设置vpath并生成一个源文件列表到一个变量中。我需要在不编译任何内容的情况下运行makefile(编译实际上由不同的makefile处理),并根据vpath设置查看文件名匹配的真实文件。

1 个答案:

答案 0 :(得分:6)

选项1:让make进行路径搜索:

.PHONY: whichfiles
whichfiles: $(LIST_OF_SOURCE_FILES)
    @echo $+

选项2:使用$(通配符)模拟路径搜索:

.PHONY: whichfiles
whichfiles:
    @echo $(foreach f,$(LIST_OF_SOURCE_FILES),$(firstword $(wildcard $(VPATH:%=%/$f)) not-found:$f))

无论哪种方式,“make whichfiles”都会打印匹配文件列表。

如果找不到某些文件,选项1将失败,并且“无规则”报告无法找到的第一个文件。选项2将为每个丢失的文件打印“not-found:”。