nmake:批处理文件可以作为 make 命令块的一部分运行,影响 nmake.exe 进程的环境吗?

Posted

技术标签:

【中文标题】nmake:批处理文件可以作为 make 命令块的一部分运行,影响 nmake.exe 进程的环境吗?【英文标题】:nmake: can a batch file run as part of a make command block, affect the environment of the nmake.exe process? 【发布时间】:2010-05-10 21:06:16 【问题描述】:

如果我这样做,我认为在 nmake 中:

 example :
        set value=77
        echo %%value%%

结果会在控制台显示 77。

我有没有办法调用会影响 nmake.exe 进程环境的 .cmd 或 .bat 文件?假设我将语句set value=77 放在一个名为“setvalue.cmd”的文件中。然后把makefile改成这样:

 example :
        setvalue
        echo %%value%%

我明白了:

%value%

或者,如果有一种方法可以在命令块中设置宏,那也可以。或者,一种从批处理文件设置宏值的方法,甚至在命令块之外。

【问题讨论】:

你不能直接影响环境,但是你可以得到返回码和传递参数给批处理文件,所以它就像调用一个外部程序:-)。 好的,返回值仅被解释为 make 中的错误代码,因此您需要创建一个文件或其他东西来共享值。 【参考方案1】:

您可以在 makefile 预处理期间创建一个 nmake sn-p,并将其读入。假设 batch.cmd 输出有效的 nmake 语法,则

!if [batch.cmd >makefile.auto]
!error *** Could not create makefile.auto
!endif
!include makefile.auto

您应该确保batch.cmd 正确设置%errorlevel%(例如exit /b 22)。

makefile.auto 可以包含任何内容,但您可能想要value=77 之类的内容。几点:

使用 nmake 语法取消引用 value ($(value)) 如有必要,您可以将参数传递给batch.cmd ([batch.cmd $(OBJECTS) >makefile.auto])

【讨论】:

【参考方案2】:

不,我不这么认为。

【讨论】:

以上是关于nmake:批处理文件可以作为 make 命令块的一部分运行,影响 nmake.exe 进程的环境吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 nmake 克服错误(make -k 的行为)

将 nmake 转换为 make

递归nmake目标

nmake文件学习记录看《跟我一起写Makefile》

nmake文件学习记录看《跟我一起写Makefile》

nmake文件学习记录看《跟我一起写Makefile》