Makefile.PHONY目标无法按预期工作

Makefile.PHONY目标无法按预期工作,makefile,Makefile,我正在写一个简单的Makefile来练习 #!/bin/make dir/%/compile: @echo "The target '$@ had been built'" 在我的工作目录中,目录布局如下 ├── dir │   └── subdir │   └── compile └── Makefile 当我键入make dir/subdir/compile时,它声明目标是最新的,如下所示 make: `dir/subdir/compile' is up to date

我正在写一个简单的Makefile来练习

#!/bin/make
dir/%/compile:
     @echo "The target '$@ had been built'"
在我的工作目录中,目录布局如下

├── dir
│   └── subdir
│       └── compile
└── Makefile
当我键入make dir/subdir/compile时,它声明目标是最新的,如下所示

make: `dir/subdir/compile' is up to date.
没错。 但它仍然声称该目标是最新的,即使是一个

#/bin/make
.PHONY: dir/%/compile
dir/%/compile:
     @echo "The target '$@ had been built'"
据我所知,无论目标是否存在,骗子都可以无条件地建造目标
然而,它似乎没有发挥应有的作用。有人能帮我弄清楚吗?谢谢

您不能将模式与
.PHONY
一起使用。只有真正的目标名称才有效。您只是说名为
dir/%/compile
的文本目标是假的。

是的。在我将模式更改为真实的目标名称后,它仍然有效。但是,我想知道是否有机会使每次构建的模式目标规则都有效?@shwang您可能会有兴趣阅读它。@Chnossos哦,这正是我想要的。非常感谢您提供的信息。您在我想您想写的文章中犯了一个错误:
#/bin/make
@jml是的,那是个打字错误。谢谢