2

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

4

1 回答 1

6

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

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

选项 2:使用 $(wildcard) 模拟路径搜索:

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

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

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

于 2010-04-17T16:56:56.247 回答