Makefile 为什么即使使用.phony,化妆目标也是最新的?

Makefile 为什么即使使用.phony,化妆目标也是最新的?,makefile,gnu-make,Makefile,Gnu Make,我有一个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

我有一个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.
。。。
...
rm-rf*/html/*~*/notes/*.html
make:对“所有人”都不做任何事情。
make:“MATE40001”是最新的。
据我所知,
make
正在查找文件MATE40001,该文件作为文件夹存在,但由于没有更新的文件而停止。但是我不希望发生这种情况,我认为添加
.phony:MATE40001
可以解决这个问题

我需要添加/更改什么来解决此问题?

来自@G.M.的评论

使用
.PHONY
代替@G.M评论中的
.PHONY

使用
.PHONY
代替
.PHONY

打字:
.PHONY
-->
.PHONY
?打字:
.PHONY
-->
.PHONY