为什么 make 目标即使在使用 .phony 时也是最新的?

Why is the make target up to date even when using .phony?

我有一个如下所示的 Makefile:

RENDER_HTML=jupyter nbconvert --execute --to html
MATE40001_TARGETS=$(wildcard MATE40001/notes/*.ipynb)

.phony: all
all:    MATE40001

.phony: variables
variables:
    @echo MATE40001_TARGETS:
    @echo ${MATE40001_TARGETS} | sed 's/ /\n/' | sed 's/MATE/\tMATE/'

.phony: MATE40001
MATE40001:  ${MATE40001_TARGETS}
    mkdir -p $@/html/
    ${RENDER_HTML} $^
    mv $@/notes/*.html $@/html/

.phony: clean
clean:
    rm -rf */html/ *~ */notes/*.html

当我运行:

make
make clean 
make
make MATE40001

我得到以下输出:

...
<normal output>
...
rm -rf */html/ *~ */notes/*.html
make: Nothing to be done for 'all'.
make: 'MATE40001' is up to date.

据我了解,make 正在寻找文件 MATE40001,该文件作为文件夹存在,然后由于没有更新的文件而停止。但是我不希望这种情况发生,我认为添加 .phony: MATE40001 可以解决这个问题。

我需要什么来add/change解决这个问题?

来自@G.M的评论。

使用.PHONY代替.phony