我写了一个简单的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手册的哪一部分才能理解其中的区别?
学习手册中的哪部分内容取决于哪一个 make
手册,但对你观察到的行为的解释很简单:当你运行 make
而不指定任何目标来建设。make
构建 默认目标,这是makefile中出现的第一个目标,它的名字不是由句号('.')和大写字母组成。
特别是,目标名称 "all "对以下情况没有特殊意义 make
. 它的使用只是一种普遍的惯例,而为了使。all
目标按照你的期望工作 (也就是说,为了让它成为默认目标),它必须在 makefile 中被放在第一位。 有一些makefile有一个 "all "目标,它被故意放在其他地方,这样就有一个不同的目标作为默认目标。 当它不是默认目标时,你仍然可以通过在命令行中命名来明确地构建它。make all
.
当运行 make
在没有任何目标的情况下,Makefile中的第一个目标将被执行。
您可以使用 .DEFAULT_GOAL
变量.读取 https:/www.gnu.orgsoftwaremakemanualhtml_nodeGoals.html 更多信息