微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运行 vcvarsall,但 cl 和其他仍然不可用

如何解决运行 vcvarsall,但 cl 和其他仍然不可用

如题,执行后使用Powershell

PS C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build> .\vcvarsall.bat amd64

那么像 clnmakemsbuild 这样的程序应该在路径上可用,但它们不是

PS C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build> cl cl :术语“cl”不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查 名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 在行:1 字符:1

  • cl
  • ~~
    • CategoryInfo : ObjectNotFound: (cl:String) [],CommandNotFoundException
    • FullyQualifiedErrorId : CommandNotFoundException

规格:

  • 具有“使用 C++ 进行桌面开发”工作负载的 VS 2019 社区版:
    • MSVC v142 - VS 2019 C++ x64/x86 构建工具 (v14.28)
    • Windows 10 SDK (10.0.18362.0)
    • 即时调试器
    • C++ 分析工具
    • 适用于 Windows 的 C++ CMake 工具
    • 用于最新 v142 构建工具(x86 和 x64)的 C++ ATL
    • 用于 Boost.Test 的测试适配器
    • 用于 Google 测试的测试适配器
    • 实时分享
    • C++ AddressSanitizer(实验性)
  • Win10 Pro N x64,20H2,19042.746

我错过了什么?

解决方法

Powershell 在子 cmd 进程中执行批处理文件。 VS 环境在该 cmd 进程中设置,然后在进程结束并且控制权返回到 Powershell 时被丢弃。

直截了当的解决方案是颠倒顺序,并在启动Powershell会话之前设置VS环境,以便PS继承它。假设使用正确的 VS160COMNTOOLS 环境变量集进行常规 VS 安装,这可以通过在命令提示符下、通过“开始/运行”或从 PS 本身运行以下命令来完成。

cmd /c ""%VS160COMNTOOLS%\..\..\VC\Auxiliary\Build\vcVarsAll.bat" amd64 && start powershell"

另请参阅 In a CMD batch file,can I determine if it was run from powershell?How can I use PowerShell with the Visual Studio Command Prompt? 以获取更多讨论和可能的替代方案 - 通常用于将环境变量从批处理文件返回到 PS,特别是对于 VS 环境。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。