伪目标不应该是真实目标文件的先决条件;如果是,则每次
make
更新该文件时都会运行其配方。
如果这就是我想要的怎么办?
例如,如果我有一个名为lint
的虚假目标提示app/scripts/main.js
,我希望每次make
更新时都会运行(变换和缩小){ {1}}?
答案 0 :(得分:0)
我刚删除了lint
目标,并将其配方作为dist/scripts/main.js
目标配方的第一个命令。
dist/scripts/main.js : app/scripts/main.js
./node_modules/.bin/eslint $< && \
mkdir -p dist/scripts && \
./node_modules/.bin/babel $< | \
./node_modules/.bin/uglifyjs - --screw-ie8 -o $@ -m -c
答案 1 :(得分:0)
更新后的答案:当前的GNU make手册未指定问题中引用的“规则”,而是在forced targets条目中明确指出要使用此规则,其中包括注释:
如您所见,以这种方式使用
FORCE
与使用.PHONY clean
具有相同的结果。使用
.PHONY
更明确,更高效。但是,其他版本的make不支持.PHONY
;因此FORCE
出现在许多Makefile中