如何创建可以将目标扩展为依赖项的make pattern规则?

时间:2011-08-31 18:54:57

标签: gnu-make

我正在尝试创建一个具有以下规则的makefile:

~/$ cat > Makefile << EOF
FILES=a b c
$(FILES): % : src/%/%
        @echo "$@ $<"
EOF

运行命令会给出:

~/$ make a
make: *** No rule to make target `src/a/%', needed by `a'.  Stop.

我希望看到的是:

~/$ make a
a src/a/a

创建规则如何扩展第二个%

1 个答案:

答案 0 :(得分:1)

在这种情况下, secondary expansion 可能有所帮助。
例如:

FILES=a b c
.SECONDEXPANSION:
$(FILES): % : src/$$*/$$*
    @echo "$@ $<"

如果你的GNU make版本是3.80或更低,$*可能无效。 在这种情况下,可能需要$@和一些文本操作。