使用通配符将所有Makefile目标指定为.PHONY

使用通配符将所有Makefile目标指定为.PHONY,makefile,Makefile,我的Makefile中的所有目标都不是真实的文件,只指定是否有效。虚假:%。或者我应该列出所有目标吗?您需要列出所有拟作为虚假目标的目标,作为目标的先决条件。虚假目标,而不仅仅是编写。虚假:% .PHONY:%不会做你认为它会做的事情(即,将每个目标变成一个虚假目标) 作为一个例子,考虑下面的Mag文件: .PHONY: % foo: @echo creating $@ @touch $@ 对于上面的这个makefile: $ make creating foo $ mak

我的Makefile中的所有目标都不是真实的文件,只指定
是否有效。虚假:%
。或者我应该列出所有目标吗?

您需要列出所有拟作为虚假目标的目标,作为
目标的先决条件。虚假
目标,而不仅仅是编写
。虚假:%


.PHONY:%
不会做你认为它会做的事情(即,将每个目标变成一个虚假目标)

作为一个例子,考虑下面的Mag文件:

.PHONY: %

foo:
    @echo creating $@
    @touch $@
对于上面的这个makefile:

$ make
creating foo
$ make
make: 'foo' is up to date.
因此,目标
foo
不会因为在makefile中有
.phony:%
而变成虚假目标。否则,
foo
的配方就会被执行,因为虚假目标总是过时的