使用相同名称但不同目录生成的Makefile规则

使用相同名称但不同目录生成的Makefile规则,makefile,Makefile,我想要一条规则,比如: build/%.ext: src/%.ext action 我想优化文件夹中的一个文件目录,然后输出到另一个文件夹。但是,这些文件在输入和输出文件夹中具有相同的名称。我已经尝试了上述规则的各种迭代,但make将始终或永远不会重建,这取决于我如何调整上述规则。建议 编辑: 我最终得到了以下解决方案,效果非常好 JS = \ src/js/script2.js \ src/js/script1.js JS_OPT = $(patsubst src/js/%

我想要一条规则,比如:

build/%.ext: src/%.ext
    action
我想优化文件夹中的一个文件目录,然后输出到另一个文件夹。但是,这些文件在输入和输出文件夹中具有相同的名称。我已经尝试了上述规则的各种迭代,但make将始终或永远不会重建,这取决于我如何调整上述规则。建议

编辑: 我最终得到了以下解决方案,效果非常好

JS = \
  src/js/script2.js \
  src/js/script1.js

JS_OPT = $(patsubst src/js/%.js,web/js/%.js, $(JS))

all: $(JS_OPT)

$(JS_OPT): web/js/%.js: src/js/%.js
  cat $@ | ./bin/jsmin > $<
JS=\
src/js/script2.js\
src/js/script1.js
JS_OPT=$(patsubst src/JS/%.JS,web/JS/%.JS,$(JS))
全部:$(JS_OPT)
$(JS_OPT):web/JS/%.JS:src/JS/%.JS
cat$@|/bin/jsmin>$<

试试这样的想法:

INPUT_FILES = \
  src/a.txt   \
  src/b.txt   \

OPTIMIZED_FILES=$(patsubst src/%.ext,build/%.ext,$(INPUT_FILES))

$(OPTIMIZED_FILES): build/%.ext: src/%.txt
     optimize_command $@ $<
INPUT_文件=\
src/a.txt\
src/b.txt\
优化的_文件=$(patsubst src/%.ext,build/%.ext,$(输入_文件))
$(优化的_文件):build/%.ext:src/%.txt
优化命令$@$<

Make查看修改时间,以决定是否应重建优化的文件。那么看看国防部。src文件的时间和相应的优化文件时间,以了解make是否真的应该重建优化文件。使用“stat”以秒为单位查看修改时间。我了解make的工作原理。我已经几个小时没有修改源文件了,它们仍在重建中。