【发布时间】:2012-11-30 21:52:16
【问题描述】:
这是我的 Makefile 的简化版本:
.PHONY: all
all: src/server.coffee
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
我想运行 make 并且只有在 src/server.coffee 发生更改时才重新编译它。但是,每次我运行 make 时它都会重新编译:
$ make
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
$ make
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
如果我将 Makefile 更改为不使用虚假目标,它会按预期工作。新的 Makefile:
bin/server.js: src/server.coffee
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
结果:
$ make
mkdir -p bin
./node_modules/.bin/coffee -c -o bin src/server.coffee
$ make
make: `bin/server.js' is up to date.
为什么它不尊重我对虚假目标的依赖?我问的原因是因为实际上,我不会只是将单个文件编译到另一个文件中,所以我不想跟踪所有输出文件的名称以用作目标。
【问题讨论】:
标签: makefile dependencies