我的Makefile中的所有目标都不是真实文件,仅指定.PHONY: %
是否有效。或者我应该列出所有目标吗?
答案 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
的配方将被执行,因为虚假的目标总是过时的。