gpt4 book ai didi

makefile - makefile 依赖项如何工作?

转载 作者:行者123 更新时间:2023-12-01 15:20:13 24 4
gpt4 key购买 nike

我目前对 makefile 目标的工作方式感到困惑。我有一个当前的理解,我不知道它是否正确,因为我一直在阅读的教程对我来说不是很清楚。这是我目前的理解

  1. 当您在终端中运行“make”时,makefile 实用程序会在 makefile 中找到第一个目标并尝试运行它,但在此之前它会查看文件中的所有依赖项
  2. (这是我开始感到困惑的地方):如果依赖项是 makefile 中的一个目标,但在 makefile 的目录中不作为文件存在,make 只需运行该目标。如果依赖项是文件名,但不是 makefile 中的目标,实用程序会检查文件是否存在,如果文件不存在,实用程序会向您大喊大叫。如果依赖项是存在于目录和目标中的文件,则运行目标,前提是文件目标所依赖的任何文件都比关联文件新。

我写对了吗?它比我想象的要简单吗?

最佳答案

你或多或少是对的,但可以说得更清楚一点。关于 make 如何选择初始目标,您是正确的,当然,如果用户在 make 命令行上指定了一个特定目标,那么将使用该目标而不是第一个目标。

然后 make 基本上为每个目标实现一个递归算法,其工作方式如下:

  1. 找到构建该目标的规则。如果没有构建目标的规则,则 make 失败。
  2. 对于目标的每个先决条件,以该先决条件作为目标运行此算法。
  3. 如果目标不存在,或者任何先决条件的修改时间比目标的修改时间更新,则运行与目标关联的配方。如果配方失败,(通常)make 也会失败。

就是这样!当然,这隐藏了许多复杂的问题:特别是第 1 项(寻找规则)在您没有针对目标的隐式规则的情况下可能会很复杂。还可以修改规则失败时要执行的操作等行为。

但这就是基本算法!

关于makefile - makefile 依赖项如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878295/

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