Makefile目标一次构建所有匹配的文件

时间:2016-11-10 17:10:51

标签: makefile

我们有两个用于构建所有JS的目标,一个获取完整的文件列表并将其传递给transpile脚本,另一个只接受更改的文件并将其传递给transpile脚本。问题是如果您有n个已更改的文件,它会为每个文件一次执行一个匹配的目标。

目前的目标:

.PHONY: build-all
build-all:
    FILE_LIST="$(RAWJSFILES)" ./scripts/transpile.js

$(BUILD)/app/%.js: $(SRC)/app/%.js
    FILE_LIST="$(SRC)/app/$*.js" ./scripts/transpile.js

目标是否可以获取所有匹配的已更改文件,然后可以将这些文件传递给transile脚本,以便只执行一次?谢谢!

1 个答案:

答案 0 :(得分:0)

你没有确切地说你希望这个如何工作,我不熟悉JavaScript黑客攻击或“变形”,所以我无法猜测。

但是如果你想要一个始终在自上次运行以来已经改变的任何文件上运行脚本的目标,你可以使用类似的东西:

ALLFILES := $(wildcard $(SRC)/app/*.js

build-all: $(ALLFILES)
        FILE_LIST="$?" ./scripts/transpile.js
        @touch $@

有关$?的讨论,请参阅Automatic Variables

这有问题,但由于你的问题没有明确定义,不清楚它们是否会对你产生影响。