Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile中的所有目标_Makefile - Fatal编程技术网

Makefile中的所有目标

Makefile中的所有目标,makefile,Makefile,我正在学习使用漂亮的Linux工具:make。还有一件事我想了解: 让我们看一看这个简单的例子: JADE = $(shell find pages/*.jade) HTML = $(JADE:.jade=.html) all: $(HTML) %.html: %.jade jade < $< --path $< > $@ clean: rm -f $(HTML) .PHONY: clean JADE=$(shell查找页面/*.JADE) HT

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

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

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

all: $(HTML)

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

clean:
    rm -f $(HTML)

.PHONY: clean
JADE=$(shell查找页面/*.JADE)
HTML=$(JADE:.JADE=.HTML)
全部:$(HTML)
%.html:%.jade
jade<$<--path$<>$@
清洁:
rm-f$(HTML)
.假冒:干净
当我运行
watchmake
时,我真的不太理解输出字符串:make:与'all'无关

问题:

  • 所有动作的作用是什么
  • “所有动作”是否与“监视工具”相关
    all
    目标实际上只是您呈现的makefile中的默认目标。文件中的第一个目标是默认目标,它是在运行
    make
    而不指定目标时生成的

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


    watch
    实用程序只是重复运行一个命令,让您观察其输出随时间的变化。Watch将每隔几秒钟运行一次
    make
    ,并显示输出。当它第一次运行时,它将构建所有内容,并且
    watch
    make
    的所有后续调用将表明所有内容都是最新的。因此,在
    监视
    中运行
    make
    似乎并没有多大用处,除非您在任意时间点修改了文件,并且希望通过重建文件来做出反应,但这似乎是一个有点做作的例子。

    所有的目标实际上只是您展示的makefile中的默认目标。文件中的第一个目标是默认目标,它是在运行
    make
    而不指定目标时生成的

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


    watch
    实用程序只是重复运行一个命令,让您观察其输出随时间的变化。Watch将每隔几秒钟运行一次
    make
    ,并显示输出。当它第一次运行时,它将构建所有内容,并且
    watch
    make
    的所有后续调用将表明所有内容都是最新的。因此,在
    watch
    中运行
    make
    似乎并没有多大用处,除非您在任意时间点修改了文件,并且希望通过重建来做出反应,但这似乎是一个有点做作的示例。

    在我的例子中,makefile完成了编译咖啡、手写笔和翡翠的工作,所以它应该不会有任何问题。谢谢你的回答。我可以将我的所有目标都指定为多个变量,比如:
    all:$(HTML)$(JS)$(CSS)
    当然可以。如果你先尝试这些事情,然后只问那些你尝试过但没有成功的事情,这将对你更有启发性。在我的例子中,makefile负责编译咖啡、手写笔和翡翠,所以它应该不会有任何问题。谢谢你的回答。我可以将我的所有目标都指定为多个变量,比如:
    all:$(HTML)$(JS)$(CSS)
    当然可以。如果你先尝试这些事情,然后只问那些你尝试过但没有成功的事情,这将对你更有启发性。从长远来看,你会获利更多。