6

makelinux 上,我们可以执行以下操作:

foo=$(shell /bin/bar)

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

但现在我手头有一个 Microsoft 项目,该项目已编译并与 Microsoft nmake.exe. nmake 是否有等效的东西可以让我运行命令并将输出分配给变量?

4

2 回答 2

4

尽管这是一个古老的问题,但有一种方法可以解决所问的问题;它只是令人费解,就像批处理文件中的所有内容一样!

必须使用 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.

于 2014-12-24T18:51:53.637 回答
2

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

如果可能,我建议您转换为 MSBuild。

于 2011-03-10T20:59:57.233 回答