为什么在下面的示例中没有为目标“ other_file”创建文件?

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

我是制作实用程序的新手,我正在学习教程。在教程中,他们给出了一个示例,每次我们在其上运行 make 时,都会执行目标,因为未创建目标文件。
我的问题是为什么此示例中没有创建目标文件? 根据我的理解,当执行命令时,会创建目标文件。下次当 make 在文件上运行时,它会检查目标文件是否存在。如果存在,则不会再次执行命令。

我在 debian 上使用 GNU make 4.3。

some_file: other_file
    echo "This will always run, and runs second"
    touch some_file

other_file:
    echo "This will always run, and runs first"

上面总是按该顺序执行,因为 some_file 依赖于从未创建的 other_file。为什么没有创建 other_file 文件?

makefile gnu-make
1个回答
0
投票

根据我的理解,执行命令时,会创建目标文件。

不一定。当执行目标的命令时,结果就是这些命令所产生的效果。通常,他们应该创建一个与目标同名的文件,但这不是自动的。如果这就是 makefile 作者的意图,那么作者有责任提供实现它的方法。

在这方面,请注意

some_file
的配方和
other_file
的配方之间的一个关键区别:前者包含命令
touch some_file
,该命令将在必要时创建该文件,并在任何情况下设置其最后修改时间戳。后者不包含此类命令。

那么,

为什么没有创建 other_file 文件?

因为

other_file
的配方没有这样的效果。

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