gpt4 book ai didi

javascript - Makefile 不对 xxx 执行任何操作

转载 作者:行者123 更新时间:2023-12-02 19:54:12 28 4
gpt4 key购买 nike

我很困惑。我见过一些类似的问题,但没有一个能解决我的问题;所以我在网上抓取了这个脚本,它通过运行 makefile 自动压缩 javascript 文件,如下所示:

concatenated.min.js: file1.js file2.js
java -jar ~/bin/compiler.jar $(addprefix --js=,$^) >$@

我这里有这个 make 文件

JS_TARGETS = a.js b.js c.js d.js

CLOSURE = java -jar ~/bin/compiler.jar
CLOSURE_FLAGS =

JS_MINIFIED = $(JS_TARGETS:.js=.min.js)
JS_GZIP = $(JS_TARGETS:.js=.js.gz)
JS_MIN_GZIP = $(JS_TARGETS:.js=.min.js.gz)

js: $(JS_TARGETS) $(JS_MINIFIED) $(JS_GZIP) $(JS_MIN_GZIP)

%.min.js: %.js
$(CLOSURE) $(CLOSURE_FLAGS) --js=$< >$@

在与 a.js、b.js、c.js 和 d.js 相同的目录中,我有一个文件 concat.min.js。然后,我运行了 make concat.min.js 并且 makefile 给出了“对 concat.min.js 无需执行任何操作”。

我还认为问题是因为我缺少 %.min.js 上的 $(addprefix --js=,$^) >$@ 部分规则。但即使我将其添加到规则中,它似乎仍然给我同样的错误。我做错了什么/打字错误吗?谢谢。

最佳答案

%.min.js: %.js 行的意思是“如果文件 foo.js 比 foo.min.js 新,那么 foo.min.js 就超出了 -已过时,以下是更新方法”。因此,如果您说 make a.min.js,make 会发现您(大概)没有 a.min.js 文件,因此它肯定不是较新的文件比 a.js 更重要,因此它将使用 makefile 中的命令来生成它。

您收到的消息是“您要求我制作 concat.min.js,但没有比它更新的文件 concat.js,所以...没有什么可做的”。

看看你问题的其余部分,我怀疑你想要类似的东西:

concatenated.min.js: $(JS_TARGETS)
java -jar ~/bin/compiler.jar $(addprefix --js=,$^) >$@

这可以确保 concatenated.min.jsJS_TARGETS 中列出的每个文件都更新。

关于javascript - Makefile 不对 xxx 执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com