首页 > 解决方案 > 您应该如何在包含的 Makefile 中使用 .PHONY?

问题描述

假设我有一组 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 文档或类似问题中找到任何相关内容。

标签: makefilegnu-make

解决方案


该声明

.PHONY: rule1

告诉 Make 它不应将“rule1”视为要构建的文件的名称。假设你把它放在Makefile. 当您运行另一个 makefilefoo.mk或包含它的 makefile 时会发生什么?

运行rule1规则时,是否希望 Make 将其视为 PHONY 目标?如果您的答案不是“这取决于我使用的 makefile”,那么您应该在 makefile 中有定义规则的语句。


推荐阅读