能否在Makefile中获取当前函数/变量名?有无类似C中__FUNCTION__的内置变量?
Makefile中获取当前函数/变量名称的方法
Makefile本身没有内置的类似.VARIABLE这样的变量,无法直接获取当前被调用的变量宏(即通过call调用的变量)的名称,也不存在等价于C语言__FUNCTION__的内置特性。
针对你给出的示例代码:
my_variable=$(1) and $(.VARIABLE) $(info $$(call my_variable,1) is "$(call my_variable,1)")
实际运行时,.VARIABLE不属于合法的内置变量,因此输出会是 $(call my_variable,1) is "1 and ",无法达到你预期的效果。
如果要实现类似需求,只能通过显式传递名称参数的方式模拟,比如修改代码为:
my_variable=$(2) and $(1) $(info $$(call my_variable,my_variable,1) is "$(call my_variable,my_variable,1)")
运行后就能得到预期输出:$(call my_variable,my_variable,1) is "1 and my_variable"。
需要注意的是,Makefile的变量和call调用的变量宏本质是文本替换,不像编程语言的函数有运行时上下文可以自动获取自身标识,所以只能通过手动传参的方式实现类似功能。
内容的提问来源于stack exchange,提问作者Maarten ten Velden
相关产品推荐
相关产品推荐

