Makefile调用函数。如何获得所有论点

时间:2016-08-12 15:57:14

标签: makefile gnu-make

当我在Makefile中定义自定义函数时,就像这样

define add_target
${1}: ${2} ${3}
endef

如何获取已提供给$(call add_target, ...)的所有参数的列表?

因此$(call add_target, A, B)将扩展为A: B$(call add_target, A, B, C, D)将扩展为A: B C D

GNU manual只说

  

当make扩展此函数时,它会将每个参数分配给临时变量$(1),$(2)等。变量$(0)将包含变量。没有最大数量的参数参数。

但没有关于如何获得所有参数。

1 个答案:

答案 0 :(得分:8)

除了写出$1 $2 $3 $4 $5 $6 ...之外没办法,当然无论您枚举多少变量,调用者都可以使用更多。

但是,在您的示例中,最简单的方法是传递两个参数:目标名称和先决条件列表(作为单个参数)。所以它会是:

define add_target
${1}: ${2}
endef

... $(call add_target, A, B)
... $(call add_target, A, B C D)

(没有逗号分隔列表中的先决条件)