makefiles中的扩展

makefiles中的扩展,makefile,expand,Makefile,Expand,在makefiles的上下文中,我经常在文档/论坛中看到“扩展”这个术语,尽管它很少被定义。在谈论makefiles时,展开变量或参数到底意味着什么?展开字符串意味着用这些内容的值替换对字符串中变量或函数调用的引用(例如,$(NAME)) 考虑: FOO = a b c BAR = $(FOO) d e BAZ = $(BAR) f g BAZ的值为$(BAR)f g。如果您尝试使用它: 然后Make展开变量,也就是说它用BAZ的值替换$(BAZ): $(info $(BAR) f g) 然

在makefiles的上下文中,我经常在文档/论坛中看到“扩展”这个术语,尽管它很少被定义。在谈论makefiles时,展开变量或参数到底意味着什么?

展开字符串意味着用这些内容的值替换对字符串中变量或函数调用的引用(例如,
$(NAME)

考虑:

FOO = a b c
BAR = $(FOO) d e
BAZ = $(BAR) f g
BAZ
的值为
$(BAR)f g
。如果您尝试使用它:

然后Make展开变量,也就是说它用
BAZ
的值替换
$(BAZ)

$(info $(BAR) f g)
然后,
$(BAR)
的值为
BAR

$(info $(FOO) d e f g)
然后值为
FOO
$(FOO)

$(info a b c d e f g)
它执行
info
函数并打印出“abcdefg”


请注意,有些东西会扩展变量,有些则不会。例如,赋值
BAR=$(FOO)de
不会展开右侧的
$(FOO)
。另一种作业,
BAR:=$(FOO)de
,确实如此。

对于这样一个简单的想法,很难解释。。。
$(info a b c d e f g)