为目标扩展程序制作通配符

时间:2017-04-04 11:36:40

标签: makefile gnu-make

我的项目中有一个目标,它上面可以有大量不同的扩展名,也有一个没有扩展名的目标:

target
target.a
target.b
...
target.x

我希望能够使用通配符为扩展名指定目标,因此我不需要为每个目标扩展名提供配方。我想我可以通过模式规则这样做:

target%: VAR=1
         $(MAKE) MY_VARS += $(VAR) $@

但是,当我运行make时,这不会构建目标。任何人都可以建议我可以做这个通配符吗?

1 个答案:

答案 0 :(得分:3)

你有三个问题。首先,您不能将同一规则定义中的特定于目标的变量与配方相结合。其次,模式必须匹配至少一个字符,因此模式target%与目标target不匹配。最后,当您在命令行上提供变量赋值时,您不能在变量名,赋值运算符和值之间使用空格:它们必须都是相同的单词。

你可以用这个:

targe%: VAR=1
targe%:
        $(MAKE) MY_VARS+='$(VAR)' $@