使用 makefile 运行生成汇总,即使文件没有更改

Generating roll-up with makefile runs even if files don't change

我正在尝试制作所有生成的汇总文件 css。 bin/generateTemplates 脚本处理从其嵌套目录中提取所有 *.less 文件并在 build/gui.css 中生成汇总。但是,即使 LESS_FILES 中的 none 个文件发生更改,它仍然会触发脚本到 运行。

我假设我在 one:many 关系上做错了什么。

...

BUILDDIR := build/
LESS_FILES := $(shell find views -type f -name '*.less')
CSS_FILE := build/gui.css

$(CSS_FILE): $(LESS_FILES) $(BUILDDIR)
    bin/generateTemplates

.PHONY: all
all: $(CSS_FILE)

...

您没有说明它是如何创建或使用的,但通常您不应将 $(BUILDDIR)(或任何其他目录)列为目标的先决条件,除非在非常特殊的情况下。每当在该目录中创建、删除或重命名文件时,该目录的修改时间就会更新,因此每次发生这种情况时,$(CSS_FILE) 目标都被认为是过时的,因为目录修改时间较新。