2

我正在学习使用漂亮的 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'。

问题:

  1. all 的作用是什么?
  2. all 动作对 watch tool 有什么作用吗?
4

1 回答 1

4

all目标实际上只是您提供的生成文件中的默认目标。make文件中的第一个目标是默认目标,在不指定目标的情况下运行时构建。

当 make 告诉你在构建目标时它没有工作要做时all,这意味着所有依赖项都已经构建并且是最新的(即自上次构建以来它们的依赖项都没有更改)。在您的情况下,这意味着 HTML 输出文件比相应的 Jade 输入文件更新。因此,make 没有什么可做的。

watch实用程序只是重复运行一个命令,让您观察其输出如何随时间变化。Watchmake每隔几秒就会运行一次并显示输出。当它第一次运行时,它将构建所有内容,并且所有后续调用makebywatch都会说所有内容都是最新的。make因此,在 内运行似乎并没有那么有用watch,除非您在任意时间点修改文件并且您想通过重建它们来做出反应,但这似乎是一个有点做作的例子。

于 2012-04-29T10:34:57.833 回答