当它依赖于一个被删除的文件时 make 重建一个目标

Make make rebuild a target when it depends on a deleted file

假设我有这样的 make 规则:

SOURCES := $(wildcard ./text/*.txt)

$(INDEX) : $(SOURCES)
    $(COMPILER) $(SOURCES)

然后其中一个文本文件 ./text/foo.txt 被删除。目标 $(INDEX) 似乎没有重建。在这种情况下,我该如何 make 重建?

如果您的 ./text 目录仅包含您的源代码和所有源代码,您可以将其添加为目标的先决条件:

$(INDEX) : $(SOURCES) ./text

目录与普通文件不同:它们的最后修改日期在您添加、删除或重命名其中的文件(或子目录)时更新,而不是在修改现有文件时更新。将其视为包含所包含文件列表的文件。