无法识别“nmake”一词[重复]

Posted

技术标签:

【中文标题】无法识别“nmake”一词[重复]【英文标题】:The term 'nmake' is not recognized [duplicate] 【发布时间】:2018-04-24 13:56:30 【问题描述】:

我做错了,但我不知道是什么。我有一个 PowerShell 脚本,其中有一个像这样的变量:

$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"

现在,在这个脚本中,我想调用这个 vcvarsall.bat 这样做:

& "$($VCVARSALLBAT)" x86_amd64

从我看到的输出中,它运行了。打完vcvarsall.bat之后,我打给nmake

即我的脚本如下所示:

$VCVARSALLBAT = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
& "$($VCVARSALLBAT)" x86_amd64
nmake

我收到此错误消息:

nmake :术语“nmake”不被识别为 cmdlet、函数的名称, 脚本文件或可运行的程序。检查名称的拼写,或者如果路径 已包含,请验证路径是否正确,然后重试。 在 ...:214 字符:1 + nmake + ~~~~~ + CategoryInfo : ObjectNotFound: (nmake:String) [], ParentContainsErrorRecordException +fullyQualifiedErrorId:CommandNotFoundException

奇怪的是:当我进入Windows的普通命令行并调用以下语句时,我可以毫无错误地调用nmake

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
nmake

【问题讨论】:

您运行的是 x64 PowerShell 还是 x86?我的猜测是,当您想运行 32 位时,您正在运行 64 位。 【参考方案1】:

如果nmake 是一个程序,请尝试nmake.exenmake.exe 需要在您的路径中才能正常工作。如果不是,您可以 (a) 指定可执行文件的完整路径 (b) 或将可执行文件添加到您的路径。您可以通过在 Powershell 或 CMD 提示符下调用 where.exe nmake 来查看可执行文件是否在您的路径中。

添加到答案

where.exe 是这样做的...

如果您在 CMD 中找到某些内容但在 Powershell 中没有找到,我会验证您的路径是否匹配:

如果给定程序在您的路径中,where.exe 会找到它,即使在 Powershell 中也是如此。

对于原始帖子,您得到的标准是“我找不到您的命令”。 Powershell 的异常:

如果你真的想测试是否可以从 Powershell 调用 exe,显式调用它:

'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\bin\Hostx86\x86\nmake.exe'

如果可行并且您想通过程序名称调用它,请仔细检查您的路径。

【讨论】:

我试过nmake.exe,但我仍然得到同样的错误。在我的情况下,在 Powershell 中调用 & "$($VCVARSALLBAT)" x86_amd64 应该将路径设置为 nmake.exe,但 Powershell 不会识别它。 您是否使用where.exe 来查看nmake.exe 是否在您的路径中? 如果批处理文件的目的是填充环境变量,那么您不能只从 PowerShell 运行它。 (这是因为 PowerShell 使用 cmd.exe 执行脚本,但是当 cmd.exe 终止时,变量会被释放。)请参阅重复链接中的答案以获取解决此问题的 PowerShell 函数。 Visual Studio 带有几个这种类型的批处理文件。您不能直接在 PowerShell 中执行它们并使环境变量保持不变。我写的函数(问题评论中的链接)可以解决这个限制。 我想你可能误会了。简单地将nmake.exe 目录添加到Path 变量不会有帮助,因为 VS 批处理脚本设置了一组其他相关的环境变量,所有这些变量都必须设置为命令行构建工作。

以上是关于无法识别“nmake”一词[重复]的主要内容,如果未能解决你的问题,请参考以下文章

NullPointerException 我无法识别 [重复]

c#,LINQ to Entities 无法识别方法'Int32 [重复]

CSS样式无法识别数字[重复]

模块无法识别索引变量[重复]

jQuery无法识别对html的更改[重复]

在 ListFragment 中无法识别 findViewById [重复]