Makefile GNU制作皮棉的先决条件

Makefile GNU制作皮棉的先决条件,makefile,lint,eslint,Makefile,Lint,Eslint,报告说: 虚假目标不应是真实目标文件的先决条件;如果是,它的配方将在每次make更新该文件时运行 如果那就是我想要的呢 例如,如果我有一个名为lint的假目标,它lintsapp/scripts/main.js,并且我希望它在每次make进行更新(transfile&minify)时运行,该怎么办dist/scripts/main.js?我刚刚删除了lint目标,并将其配方作为dist/scripts/main.js目标配方的第一个命令 dist/scripts/main.js : app/sc

报告说:

虚假目标不应是真实目标文件的先决条件;如果是,它的配方将在每次
make
更新该文件时运行

如果那就是我想要的呢


例如,如果我有一个名为
lint
的假目标,它lints
app/scripts/main.js
,并且我希望它在每次
make
进行更新(transfile&minify)时运行,该怎么办
dist/scripts/main.js

我刚刚删除了
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
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

我刚刚删除了
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
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

更新的答案:当前的GNU make手册没有从问题中指定引用的“规则”,而是明确指出在关于的条目中使用此规则,其中包括一个注释:

如您所见,以这种方式使用
FORCE
与使用
.PHONY clean
的效果相同

使用
.PHONY
更明确、更有效。但是,make的其他版本不支持
.PHONY
;因此,
FORCE
出现在许多makefile中


更新答案:当前的GNU make手册没有具体说明问题中引用的“规则”,而是明确表示要在关于的条目中使用此规则,其中包括一个注释:

如您所见,以这种方式使用
FORCE
与使用
.PHONY clean
的效果相同

使用
.PHONY
更明确、更有效。但是,make的其他版本不支持
.PHONY
;因此,
FORCE
出现在许多makefile中


注:我了解Gulp,更喜欢使用Make。注:我了解Gulp,更喜欢使用Make。