我正在尝试将我的 SVN 修订信息保存到一个宏中,同时通过 Microsoft Visual Studio 的 nmake 制作我的代码。
在 GNU make 中,我执行以下操作:
SVN_REVISION=r$(shell svnversion -n)
所以我得到例如:SVN_REVISION=r10001
这也可以在 Microsoft nmake 中进行吗?
先感谢您。
最佳答案
使用提到的技术以及对 make 的递归调用,可以通过以下方式完成:
!IFNDEF MAKE
MAKE=NMAKE
!ENDIF
!IFNDEF SVN_REVISION
! IF [echo off && FOR /F "usebackq" %i IN (`svnrevision -n`) DO SET SVN_REVISION=%i && $(MAKE) /$(MAKEFLAGS) /nologo /f $(MAKEDIR)\Makefile && exit /b ] == 0
! MESSAGE Make completed
! ELSE
! ERROR Error in nmake
! ENDIF
!ELSE
# $(SVN_REVISION) now contains the string returned from the command `svnrevision -n`
!MESSAGE SVN_REVISION is $(SVN_REVISION)
# Put the parts of the makefile that depend on SVN_REVISION here
!ENDIF
#
# To be a valid makefile it must have some rules to perform
all:
@echo;$(SVN_REVISION)