Makefile调用函数。如何获取所有参数

Makefile调用函数。如何获取所有参数,makefile,gnu-make,Makefile,Gnu Make,当我在Makefile中定义自定义函数时,如下所示 define add_target ${1}: ${2} ${3} endef 如何获取已提供给$(调用add_target,…)的所有参数的列表 所以这个$(调用add_target,A,B)将扩展到A:B 这个$(调用add_target,A,B,C,D)将扩展到A:bcd 只是说 make扩展此函数时,会将每个参数分配给临时变量$(1),$(2)等。变量$(0)将包含变量。没有最大数量的参数参数 但是没有关于如何获取所有参数的内容。没有

当我在Makefile中定义自定义函数时,如下所示

define add_target
${1}: ${2} ${3}
endef
如何获取已提供给
$(调用add_target,…)
的所有参数的列表

所以这个
$(调用add_target,A,B)
将扩展到
A:B
这个
$(调用add_target,A,B,C,D)
将扩展到
A:bcd

只是说

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


但是没有关于如何获取所有参数的内容。

没有办法,除非写出
$1$2$3$4$5$6…
,当然,无论你列举了多少变量,调用方都可以使用更多

但是,在您的示例中,最简单的方法是只传递两个参数:目标名称和前提条件列表(作为单个参数)。因此,这将是:

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

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

(列表中的先决条件之间没有逗号)

每天我都对GNU制造的垃圾越来越生气…>8^(