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

nmake:批处理文件是否可以作为make命令块的一部分运行,从而影响nmake.exe进程的环境?,nmake,Nmake,我想如果我这样做: example : set value=77 echo %%value%% 结果将在控制台上显示77 有没有办法调用会影响nmake.exe进程环境的.cmd或.bat文件?假设我将语句setvalue=77放在一个名为“setvalue.cmd”的文件中。然后将makefile更改为: example : setvalue echo %%value%% 我得到: %value% 或者,如果有办法在命令

我想如果我这样做:

 example :
        set value=77
        echo %%value%%
结果将在控制台上显示77

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

 example :
        setvalue
        echo %%value%%
我得到:

%value%

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

不,我不这么认为。

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

!if [batch.cmd >makefile.auto]
!error *** Could not create makefile.auto
!endif
!include makefile.auto
您应该确保
batch.cmd
适当地设置
%errorlevel%
(例如,
退出/b22

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

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

您不能直接影响环境,但可以获取返回代码并将参数传递给批处理文件,因此这就像调用外部程序:-)。好的,返回值仅解释为make内部的错误代码,因此您需要创建一个文件或其他共享值的内容。