我正在学习使用漂亮的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:与'all'没什么关系。
问题:
答案 0 :(得分:4)
all
目标实际上只是您提供的makefile中的默认目标。文件中的第一个目标是默认目标,它是在运行make
时构建的,而未指定目标。
当make告诉你在构建all
目标时没有工作要做的时候,这意味着所有的依赖项都是先前构建的并且是最新的(即它们之间没有任何依赖项已被更改)最后建造他们)。在您的情况下,这意味着HTML输出文件比相应的Jade输入文件更新。因此,没有什么可以做的。
watch
实用程序只是重复运行一个命令,让您观察其输出随时间的变化情况。 Watch会每隔很多秒运行make
并显示输出。当它第一次运行时,它将构建所有内容,make
watch
之后的所有后续调用都将说明所有内容都是最新的。所以在make
内运行watch
似乎没有用,除非你在任意时间点修改文件并想要通过重建它们做出反应,但这似乎是是一个有点人为的例子。