【发布时间】:2020-04-05 06:40:57
【问题描述】:
假设我有一组 Makefile 模块:
# foo.mk
rule1: prereq1
recipe1
和
# bar.mk
rule2: prereq2
recipe2
和一个主 Makefile:
# Makefile
include foo.mk
include bar.mk
是否应该将.PHONY: 包含在每个单独的 .mk 文件中,以仅包含在该文件中的虚假目标,还是应该有一些仅包含在主 Makefile 中的累积列表?
# foo.mk
TARGETS += rule1
...
# bar.mk
TARGETS += rule2
...
# Makefile
.PHONY: $(TARGETS)
我没有在GNU Make docs 或类似问题中找到任何相关内容。
【问题讨论】:
-
我不知道你所说的“应该”是什么意思。无论哪种方式都可以正常工作,因此请选择您喜欢的方式。
-
“应该” ... 如,是否有最佳实践或记录和定义的方法来做某事。如果下次遇到时被覆盖,我不想将 .PHONY 放入每个声明相关目标的文件中。
-
.PHONY永远不会被覆盖。与任何其他目标一样,每个新的.PHONY定义添加 到现有列表的更多先决条件。不,我知道没有最佳实践。两者的工作方式相同(除了一个定义了一个变量,这可能对.PHONY之外的其他东西有用,而一个没有)。出于同样的原因,不需要“记录和定义”的方法。无论您更喜欢哪个,都应该使用。 -
这就是我想要的。谢谢!