如何解决运行 vcvarsall,但 cl 和其他仍然不可用
如题,执行后使用Powershell
PS C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build> .\vcvarsall.bat amd64
那么像 cl
、nmake
或 msbuild
这样的程序应该在路径上可用,但它们不是
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 举报,一经查实,本站将立刻删除。