从命令提示符获取 Windows nmake 版本?
Posted
技术标签:
【中文标题】从命令提示符获取 Windows nmake 版本?【英文标题】:Get Windows nmake version from command prompt? 【发布时间】:2019-04-29 13:42:50 【问题描述】:我不太了解nmake
,但我在Windows 10 下使用“x64 Native Tools Command Prompt for VS 2017”中的nmake
;我想从命令提示符中找出这个工具的版本。
我找到了这个:
https://docs.microsoft.com/en-us/cpp/build/reference/batch-mode-rules?view=vs-2019
要检查 NMAKE 版本,请运行 NMAKE 版本 1.62 或更高版本提供的 _NMAKE_VER 宏。此宏返回一个表示 Visual C++ 产品版本的字符串。
...但我真的不知道如何“运行宏” - 我试过这个:
C:\>nmake _NMAKE_VER
Microsoft (R) Program Maintenance Utility Version 14.16.27026.1
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make '_NMAKE_VER'
Stop.
所以,它删除了类似版本字符串的内容,但仍然存在错误。
那么,我怎样才能正确地从命令行获取nmake
版本?
【问题讨论】:
宏用于生成文件。考虑输入nmake /?
,它会显示版本号和命令选项。
感谢@HansPassant - 随时发布这个作为答案,我会接受!
很难写出一个像样的答案,我只是不知道为什么这对你很重要。只需在自己的帖子中分享您学到的知识并将其标记为答案。
我对您的nmake
问题的回答提供了一个合理的示例,说明如何使用内置宏_NMAKE_VER
。
【参考方案1】:
正如 Hans Passant 所建议的,您可以考虑输入nmake/?
;这将为您提供您从问题中已经知道的内容,即14.16.27026.1
。
变量_NMAKE_VER
的意义在于允许您从makefile 内 测试nmake
版本或Visual Studio 版本。例如,假设您的 makefile 是:
# Check the first three characters of _NMAKE_VER to
# obtain the Visual Studio version:
!if [cmd /c if "%_NMAKE_VER:~0,3%"=="14." exit 1]
! message Using VS 2017, with NMAKE $(_NMAKE_VER)
!elseif [cmd /c if "%_NMAKE_VER:~0,3%"=="12." exit 1]
! message Using VS 2013, with NMAKE $(_NMAKE_VER)
!else
! message Unknown VS version, with NMAKE $(_NMAKE_VER)
!endif
# Just output _NMAKE_VER:
all:
@echo "Version NMAKE" $(_NMAKE_VER)
然后从 Visual Studio 2017 开发人员命令提示符发出以下命令:
nmake /nologo
会给(在我的机器上):
Using VS 2017, with NMAKE 14.10.25019.0
Version NMAKE 14.10.25019.0
或对于 Visual Studio 2013:
Using VS 2013, with NMAKE 12.00.21005.1
Version NMAKE 12.00.21005.1
我们需要使用 DOS cmd
来检查 _NMAKE_VER
,因为 nmake
不像 gmake
具有有限的字符串操作工具。
编辑:上述测试可能无法区分 VS 15 和 VS 17,因为 VS 17 nmake
版本号以 14
开头,而不是预期的 15
.
【讨论】:
编辑: 要区分 VS 15 和 VS 17,您必须更仔细地检查颠覆号,因为 VS 17nmake
主要版本号是14
,而不是预期的15
。以上是关于从命令提示符获取 Windows nmake 版本?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2017 nmake 缺少 io.h
如何在命令提示符下设置 v140_xp 工具集以使用 NMake 构建?
如何在 Windows 中使用命令提示符获取 chrome 版本