windows - 调用 vcvarsall.bat 在 Windows 7 / VS 2019 构建工具上给出“Windows 找不到 powershell.exe”
问题描述
我之前安装了 Visual Studio 2015 (14.0) 构建工具,我可以构建一个简单的 C++ 程序,无需任何 IDE,具有:
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
cl helloworld1.cpp
现在我安装了 Visual Studio 2019 构建工具,调用vcvarsall.bat
会显示以下消息:
Windows 找不到“powershell.exe”
但关闭对话框后,它仍然继续(!)。但后来它失败了:
cl:命令行错误 D8027:无法执行 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX64\x64\c1xx.dll'
我不明白为什么 powershell 必须设置一些环境变量并设置所有要使用的东西cl.exe
。
问题:使用 VS Build Tools 2019 调用 cl.exe 的正确方法是什么?
vcvarsall.bat
我们不应该像以前的版本一样先打电话吗?
(重要:我正在寻找 100% 终端模式,没有 IDE)
解决方案
官方的方法是永久或在调用之前添加%SystemRoot%\System32\WindowsPowerShell\v1.0
到您的.PATH
vcvarsall.bat
set VSCMD_SKIP_SENDTELEMETRY=1
另一种方法是在调用之前做一个vcvarsall.bat
。这是因为vcvarsall
内部调用vsdevcmd
,而内部调用又用于powershell
配置“如果用户的 VS 被选择加入,则发送遥测”。但是,遥测步骤在定义时被绕过VSCMD_SKIP_SENDTELEMETRY
(尽管这似乎没有记录,因此在未来的版本中可能会发生变化),然后powershell
不再使用或不需要。
推荐阅读
- c# - WPF 中的死锁:如何不阻塞 HwndHost.BuildWindowCore 中的 GUI 线程?
- azure - 每周三上午 9:30 和每月 2 号的 Cron 表达式
- reactjs - 使 Redux thunk 调用同步以刷新令牌
- python - 如何在 ttk 笔记本中创建“n”标签?n 是一个变量(用户输入)
- r - RStudio 本地作业:使用“sapply”的“source”多个脚本将不返回任何内容
- android - SVG 图像未在 Nativescript 中显示
- wmi - 如何在多处理器机器上使用 Get-WmiObject 的 Win32_Processor 类
- python - MoviePy ImageClip 随机产生灰色视频
- r - 是否有一个 R 函数可以让我有条件地收集?
- node.js - AWS EC2 Nodejs | 致命错误:接近堆限制的无效标记压缩分配失败 - vuejs 项目中的 JavaScript 堆内存不足