这是 MSDN 关于递归调用nmake
的信息:
使用递归宏递归调用 NMAKE。递归会话继承命令行和环境变量宏以及 Tools.ini 信息。它们不继承 makefile 定义的推理规则或 .SUFFIXES 和 .PRECIOUS 规范。要将宏传递给递归 NMAKE 会话,请在递归调用之前使用 SET 设置环境变量,在递归调用的命令中定义宏,或在 Tools.ini 中定义宏。
所以,你可以a.mak
看起来像:
# ---- a.mak ----
some_variable = value
all:
nmake -f b.mak some_variable=$(some_variable)
#--- END ---
另外,请注意,使用set
sommand 将变量放入环境中也可以,但会nmake
自动将环境变量名称大写(即使对于奇怪的变量名称,例如“ windir
”,由于某种原因在系统中是小写的),并且区分大小写,所以要使用环境变量,你必须使用大写的变量。
来自 MSDN:
继承的名称被转换为大写。继承发生在预处理之前
因此,b.mak
如果您要使用环境而不是在命令行上显式传递变量,那么您应该如下所示:
#--- b.mak ---
all:
@echo some_variable is: $(SOME_VARIABLE)
#--- end ---
因此,将 nmake 宏名称的全大写命名约定标准化可能不是一个坏主意。