Makefile追加两次通配符匹配

时间:2016-01-23 15:03:30

标签: makefile

我输入了somename.in othername.in yetanothername.in这样的文件,并希望它们作为输出位于单独的文件夹中:somename/somename.out othername/othername.out yetanothername/yetanothername.out

如何使用Makefile完成此操作?这不起作用,因为通配符只能附加一次。

IN = somename.in othername.in yetanothername.in
OUT = $(IN:%.in=%/%.out)

all:
        @echo '${OUT}'

给出了这个输出: somename /%。out othername /%。out yetanothername /%.out

2 个答案:

答案 0 :(得分:0)

这是一个肮脏的黑客,但这有效:

IN = somename.in othername.in yetanothername.in
OUT = $(foreach file, $(IN:%.in=%), $(file)/$(file).out)

all:
        @echo '${OUT}'

我不确定这是否特定于GNU make。

答案 1 :(得分:0)

OUT := $(foreach b, $(basename $(IN)), $b/$b.out)