我正在阅读GNU make手册,并对变量继承机制感到困惑。让我先讲解基础知识。GNU make中的高级变量继承
我从手动章从环境6.10变量引用:
变量在使可以来自其中使运行环境。 使得在启动时看到的每个环境变量都转换为使变量具有相同的名称和值。
想象一下,我打开一个shell(称之为“shell 1”)并定义了两个变量。然后我启动使有两个选项,“op1”和“op2”。程序使自己读取一个makefile并构造第三个变量,称为“varC”。我们得到的情况,如下图所示:
我继续从手动报价:
当使运行的配方,变量在Makefile中定义被放置到每个外壳的环境中。
这就是我现在要做的。目标的第一个配方行被执行,其中使打开一个临时shell(称之为“shell 2”)。我认为所有变量“varA”,“varB”和“varC”都出现在这个shell中,因此可以被配方行使用。虽然我不是100%确定的。
手动继续哪里食谱要求的情况下使递归:
默认情况下,只有从环境或命令行来变量传递给递归调用。您可以使用export指令来传递其他变量。
下一个食谱行是递归调用$(MAKE)
。顶层使得打开一个临时shell(称之为“shell 3”)来运行这个子制造实例。由于varC未明确导出,因此我认为它不在shell 3中,也不在子版本中。我对么?
我贴这个主题,即可获得经验丰富的makefile作家澄清。我是这个主题的新手,但我正在尽最大努力研究该手册并在此之后开始使用。所有帮助非常感谢:-)
PS:如果您发布了答案,请提及您的答案是否适用于Linux,Windows或两者。
真棒!非常感谢Tim。你的回答是优雅而有启发性的! –