运行 vcvarsall,但 cl 和其他仍然不可用
run vcvarsall, but cl and other still unavailable
如题,执行后使用Powershell
PS C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Auxiliary\Build> .\vcvarsall.bat amd64
那么像 cl
、nmake
或 msbuild
这样的程序应该在路径上可用,但它们不是
PS C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Auxiliary\Build> cl
cl : The term 'cl' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At 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 专业版 N x64, 20H2, 19042.746
我错过了什么?
Powershell 在子 cmd
进程中执行批处理文件。 VS 环境在那个 cmd
进程中设置,然后在进程结束时被丢弃并控制 returns 到 Powershell。
直截了当的解决办法是把顺序倒过来,在启动Powershell会话前设置VS环境,让PS继承。假设通常的 VS 安装具有正确的 VS160COMNTOOLS
环境变量集,这可以通过 运行 在命令提示符下通过 Start / 运行 或从 PS 执行以下操作]本身。
cmd /c ""%VS160COMNTOOLS%\..\..\VC\Auxiliary\Build\vcVarsAll.bat" amd64 && start powershell"
另请参阅 and How can I use PowerShell with the Visual Studio Command Prompt? 以了解更多讨论和可能的替代方案 - 通常用于将环境变量从批处理文件返回到 PS,特别是用于 VS 环境。
如题,执行后使用Powershell
PS C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Auxiliary\Build> .\vcvarsall.bat amd64
那么像 cl
、nmake
或 msbuild
这样的程序应该在路径上可用,但它们不是
PS C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Auxiliary\Build> cl cl : The term 'cl' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At 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 专业版 N x64, 20H2, 19042.746
我错过了什么?
Powershell 在子 cmd
进程中执行批处理文件。 VS 环境在那个 cmd
进程中设置,然后在进程结束时被丢弃并控制 returns 到 Powershell。
直截了当的解决办法是把顺序倒过来,在启动Powershell会话前设置VS环境,让PS继承。假设通常的 VS 安装具有正确的 VS160COMNTOOLS
环境变量集,这可以通过 运行 在命令提示符下通过 Start / 运行 或从 PS 执行以下操作]本身。
cmd /c ""%VS160COMNTOOLS%\..\..\VC\Auxiliary\Build\vcVarsAll.bat" amd64 && start powershell"
另请参阅