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

时间:2018-05-03 09:16:28

标签: makefile

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

1 个答案:

答案 0 :(得分:1)

您需要将所有目标为虚假目标的目标列为.PHONY目标的先决条件,而不是仅仅编写.PHONY: %

.PHONY: %没有按照您的想法行事(即将每个目标变为虚假目标)。

例如,请考虑以下makefile:

.PHONY: %

foo:
    @echo creating $@
    @touch $@

对于上面的makefile:

$ make
creating foo
$ make
make: 'foo' is up to date.

因此,通过在makefile中添加foo,目标.PHONY: %不会变成假目标。否则,foo的配方将被执行,因为虚假的目标总是过时的。