我有一个makefile,它根据某些属性设置vpath,并将一个源文件列表生成到一个变量中。我需要运行makefile而不进行任何编译(编译实际上是由其他makefile处理的),只是看文件名根据vpath设置匹配到哪些实际文件中。
最佳答案
选项1:让其进行路径搜索:
.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将为每个丢失的文件打印“找不到:”。