如何在使用Microsoft nmake时获取命令的输出?

时间:2011-02-03 06:05:07

标签: makefile nmake

在linux上使用make,我们可以执行以下操作:

foo=$(shell /bin/bar)

运行命令bar并将输出分配给foo。稍后可以通过引用$(foo)来在makefile中使用它。

但是现在我手上有一个Microsoft项目,它已经编译并与Microsoft nmake.exe链接。是否有一个与nmake相同的东西可以让我运行命令并将输出分配给变量?

2 个答案:

答案 0 :(得分:2)

我认为答案是“不”。没有等价物。

我建议您尽可能转换为MSBuild。

答案 1 :(得分:2)

虽然这是一个老问题,但有一种方法可以做所要求的事情;它就像批处理文件中的所有内容一样令人费解!

必须使用make导入环境变量和预处理器可以调用命令,然后递归调用Makefile这一事实的组合机制。它假设Makefile被称为Makefile(没有扩展名,这是默认的)。

!IFNDEF MAKE
MAKE=NMAKE
!ENDIF
!IFNDEF SHELLVALUE
!   IF [echo off && FOR /F "usebackq" %i IN (`hostname`) DO  SET SHELLVALUE=%i && $(MAKE)  /$(MAKEFLAGS) /nologo /f $(MAKEDIR)\Makefile && exit /b  ] == 0
!     MESSAGE Make completed
!   ELSE
!     ERROR Error in nmake
!   ENDIF
!ELSE
# $(SHELLVALUE) now contains the string returned from the command USERNAME
!MESSAGE Shellvalue is $(SHELLVALUE)
#      Put the parts of the makefile that depend on SHELLVALUE here
!ENDIF
#
# To be a valid makefile it must have some rules to perform
all:
     @echo;$(SHELLVALUE)

是的,我知道它很可怕,但它确实演示了如何使用任何shell命令而不仅仅是hostname来完成该技术。