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

Che*_*eso 3 nmake

我想在 nmake 中如果我这样做:

 example :
        set value=77
        echo %%value%%
Run Code Online (Sandbox Code Playgroud)

结果将在控制台上显示 77。

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

 example :
        setvalue
        echo %%value%%
Run Code Online (Sandbox Code Playgroud)

我得到:

%value%
Run Code Online (Sandbox Code Playgroud)

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

bob*_*ogo 5

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

!if [batch.cmd >makefile.auto]
!error *** Could not create makefile.auto
!endif
!include makefile.auto
Run Code Online (Sandbox Code Playgroud)

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

makefile.auto可以包含任何东西,但你可能想要像value=77. 有几点:

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