【问题标题】:run vcvarsall, but cl and other still unavailable运行 vcvarsall,但 cl 和其他仍然不可用
【发布时间】:2021-04-22 16:53:41
【问题描述】:

如题,执行后使用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、函数、脚本文件或可运行程序的名称。检查 名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 在 line:1 char: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

我错过了什么?

【问题讨论】:

    标签: visual-studio powershell msbuild nmake cl


    【解决方案1】:

    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 环境。

    【讨论】:

    • 这解释了很多事情,感谢dxiv!
    猜你喜欢
    • 2011-08-03
    • 2015-02-26
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2019-08-02
    • 2017-05-07
    相关资源
    最近更新 更多