首页 文章

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

提问于
浏览
5

当我在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 回答

  • 7

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

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

    define add_target
    ${1}: ${2}
    endef
    
    ... $(call add_target, A, B)
    ... $(call add_target, A, B C D)
    

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

相关问题