makefile源文件更新未传播到目标

时间:2014-04-28 10:44:57

标签: makefile

我有makefile

    jade = ./node_modules/.bin/jade
    nlz = ./node_modules/.bin/nlz

    build: build/index.js build/index.css build/index.html build/docs.html

    build/index.js: $(find client/*.js)
        $(nlz) build client/index.js

    build/index.css: $(find client/*.css)
        $(nlz) build client/index.css

    build/index.html: pages/home.jade pages/layout.jade
        $(jade) --path pages/home.jade < pages/home.jade > build/index.html

    build/docs.html: pages/docs.jade pages/layout.jade
        $(jade) --path pages/docs.jade < pages/docs.jade > build/docs.html

    node_modules:
        npm install

    clean:
        rm -rf build

    .PHONY: clean

但是,当我更新其中一个.js.css个文件时,输入make build会给我make: Nothing to be done for build&#39; .`。我做错了什么?

1 个答案:

答案 0 :(得分:1)

没有$(find ...)这样的make函数。

由于它不是一个已知函数,因此make认为它是一个奇怪命名的变量,它从未被设置过,因此没有值:因此,build/index.cssbuild/index.js具有没有先决条件。因此,只要它们存在,它们就会被认为是最新的。

可能你想要:

build/index.js: $(wildcard client/*.js)
        $(nlz) build client/index.js

build/index.css: $(wildcard client/*.css)
        $(nlz) build client/index.css