目标的位置如何影响makefile的行为?

问题描述 投票:0回答:1

我写了一个简单的Makefile,如下图。

.PHONY: all A B
A:
    @echo "in target A"

B:
    @echo "in target B"

all: A B

输出是

in target A

但如果我修改Makefile如下。

.PHONY: all A B
all: A B

A:
    @echo "in target A"

B:
    @echo "in target B"

输出就会变成

in target A
in target B

我应该更仔细地阅读Makefile手册的哪一部分,以了解其区别?

makefile
1个回答
0
投票

我应该更仔细地阅读Makefile手册的哪一部分才能理解其中的区别?

学习手册中的哪部分内容取决于哪一个 make 手册,但对你观察到的行为的解释很简单:当你运行 make 而不指定任何目标来建设。make 构建 默认目标,这是makefile中出现的第一个目标,它的名字不是由句号('.')和大写字母组成。

特别是,目标名称 "all "对以下情况没有特殊意义 make. 它的使用只是一种普遍的惯例,而为了使。all 目标按照你的期望工作 (也就是说,为了让它成为默认目标),它必须在 makefile 中被放在第一位。 有一些makefile有一个 "all "目标,它被故意放在其他地方,这样就有一个不同的目标作为默认目标。 当它不是默认目标时,你仍然可以通过在命令行中命名来明确地构建它。make all.


0
投票

当运行 make 在没有任何目标的情况下,Makefile中的第一个目标将被执行。

您可以使用 .DEFAULT_GOAL 变量.读取 https:/www.gnu.orgsoftwaremakemanualhtml_nodeGoals.html 更多信息

© www.soinside.com 2019 - 2024. All rights reserved.