gpt4 book ai didi

makefile - Makefile 中的所有目标

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

我正在学习使用漂亮的 Linux 工具:make。还有一点我想了解的:

让我们看一下这个简单的例子:

JADE = $(shell find pages/*.jade)
HTML = $(JADE:.jade=.html)

all: $(HTML)

%.html: %.jade
jade < $< --path $< > $@

clean:
rm -f $(HTML)

.PHONY: clean

当我运行 watch make ,我真的不太明白输出字符串:make:Nothing to do with `all'。

问题:
  • all 的作用是什么?
  • all Action 对 watch tool 有什么作用吗?
  • 最佳答案

    all target 实际上只是您提供的 makefile 中的默认目标。文件中的第一个目标是默认目标,在运行 make 时构建。没有指定目标。

    当 make 告诉您在构建 all 时没有工作可做时目标,那么这意味着所有的依赖关系都是先前构建的并且是最新的(即,自上次构建它们以来,它们的依赖关系都没有改变)。在您的情况下,这意味着 HTML 输出文件比相应的 Jade 输入文件更新。因此,make 没有什么可做的。
    watch实用程序只是重复运行一个命令,以观察其输出如何随时间变化。 watch 只会运行make每隔这么多秒并显示输出。第一次运行时,它将构建所有内容,以及所有后续调用 make通过 watch会说一切都是最新的。所以运行 make 似乎并没有那么有用。在 watch 内,除非您在任意时间点修改了文件,并且您想通过重建它们来使用react,但这似乎是一个有些人为的例子。

    关于makefile - Makefile 中的所有目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10371343/

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