我有一个奇怪的项目是在构建时生成了一些文件。它们是其他文件,但有一个特殊的sulffix。 (与普通项目相反,某些类型的所有文件意味着它们是自动生成的)
例如:
src/fileA.js
src/fileB.js.tpl
src/fileC.css
src/fileD.css.tpl
...
然后我有一个模式规则:
DATA=$(get string from template.txt)
%: %.tpl
sed 's/__TEMPLATE__/$(DATA)/g' $< > $@
templates: src/fileB.js src/fileD.css
一切都很好。在下一次构建之前......现在src/fileB.js
将不会更新,因为已经存在一个,src/fileB.js.tpl
未被更改,但我用作数据源的另一个文件template.txt
可能会更新它。这让我走上了干净的一步。
现在我的干净步骤是rm
每个文件。它太丑了。
.PHONY: clean
clean:
rm src/fileB.js
rm src/fileD.css
...
你可以看到它变得如此丑陋。
在常规项目中,我的清理只是rm *.o
,但在这里我无法rm *.js
,因为一半的文件不是自动生成的。
有没有办法让规则%: %.tpl
成为PHONY?
如果没有,有没有办法将文件列表从template
提供给clean
?
答案 0 :(得分:2)
这个怎么样?
TEMPLATES=$(wildcard src/*.tpl)
GENERATED=$(TEMPLATES:%.tpl=%)
clean:
rm -f $(GENERATED)
好吧,在测试之前我会备份......