当我在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
当make扩展此函数时,它会将每个参数分配给临时变量$(1),$(2)等。变量$(0)将包含变量。没有最大数量的参数参数。
但没有关于如何获得所有参数。
答案 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)
(没有逗号分隔列表中的先决条件)