【发布时间】:2014-04-29 03:24:22
【问题描述】:
我认为在一个规则中包含多个目标与为每个目标定义具有相同配方的多个规则是一样的;但是,当目标/依赖项有模式时,我似乎遇到了问题。
这是一个简化的示例生成文件,其中包含两种不同的文件构建方法。
all: $(foreach n, 1 2 3, $(foreach l, a b, out.$(l).$(n).txt))
1.txt 2.txt 3.txt:
touch $@
#Method One
out.a.%.txt out.b.%.txt: %.txt
touch $@
#Method Two
out.a.%.txt: %.txt
touch $@
out.b.%.txt: %.txt
touch $@
使用带有“make -n”的方法一我得到
touch 1.txt
touch out.a.1.txt
touch 2.txt
touch out.a.2.txt
touch 3.txt
touch out.a.3.txt
但是通过方法二我得到了想要的输出
touch 1.txt
touch out.a.1.txt
touch out.b.1.txt
touch 2.txt
touch out.a.2.txt
touch out.b.2.txt
touch 3.txt
touch out.a.3.txt
touch out.b.3.txt
我没有看到规则 in the on-line docs 中的多目标有任何例外。我是否错过了解释为什么这不起作用的文档的一部分?有没有简单的方法让它工作? (实际上,与这个简单的示例相比,我要构建的文件组合要多得多)。
(使用 GNU Make 3.81)
【问题讨论】:
标签: makefile