gpt4 book ai didi

makefile - 为什么 "make all"没有将 "all"添加到 .PHONY 目标就按预期工作?

转载 作者:行者123 更新时间:2023-12-05 04:05:25 29 4
gpt4 key购买 nike

我知道 .PHONY 的作用。

如果在我的 Makefile 所在的文件夹中,我添加了一个名为 clean 的空文件,并且在我运行 make clean 之后所有的 clean 目标都不会被执行,因为文件中没有任何变化,所以目标不会运行,这是正确的。如果我添加 .PHONY: clean,则 clean 被视为命令,这也是正确的。

我的问题是为什么这种行为不会发生在 all 目标上,因为我在文件夹中添加了一个 all 文件。所以基本上 all 目标仍然执行如果是 .PHONY: all

我有休闲的 makefile 代码。

all: test1 test2

test1: test1.o
test1.o: test1.c

test2: test2.o
test2.o: test2.c

clean:
rm -rf *.o test1 test2

最佳答案

你怎么知道 all 规则“仍在执行”?该规则没有配方,因此无法“执行”。

如果您的意思是即使 all 文件存在于本地目录中,make 仍在构建目标 test1test2,这就是 make 的工作原理(这与虚假目标与非虚假目标没有任何关系)。当 make 决定是否首先构建特定目标时,它会尝试构建该目标的所有先决条件,以及那些目标的所有先决条件,等等。只有在所有这些都完成之后,知道是否构建第一个目标(在本例中为all)。

关于makefile - 为什么 "make all"没有将 "all"添加到 .PHONY 目标就按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225819/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com