【发布时间】:2014-10-27 04:47:27
【问题描述】:
假设我有一组源文件:
src/foo/file.abc
src/foo/otherfile.abc
我想做一些操作(为了简单起见,我们只说复制)导致目标文件位于几个不同的地方:
dest/bar/file.xyz
dest/bar/otherfile.xyz
dest/baz/file.xyz
dest/baz/otherfile.xyz
dest/something/file.xyz
dest/something/otherfile.xyz
如何在 Makefile 中表达这种依赖关系,以便更新必备文件导致配方重新创建目标?
GNU Make manual 表示“通配符扩展由 make 在目标和先决条件中自动执行”。顺其自然,我会期待
dest/*/%.xyz : src/foo/%.abc
install -d $< $@
工作,但失败:
$ make -f test.mk dest/bar/file.xyz
make: *** No rule to make target `dest/bar/file.xyz'. Stop.
我是否误解了目标中的通配符扩展?有没有更好的方法来实现我的目标?
环境: GNU Make 3.82.90
32 位 Cygwin
【问题讨论】: