如何像开发人员命令提示符一样配置VS代码shell? 我试图建立一个任务,用于编译VisualStudio代码中的C++代码。我不能让它工作。。。但是当我打开开发人员命令提示符并粘贴它时,它发出的命令工作得非常好
我已经设法将这个问题缩小到VS代码正在使用的shell中没有设置正确的环境变量(运行如何像开发人员命令提示符一样配置VS代码shell? 我试图建立一个任务,用于编译VisualStudio代码中的C++代码。我不能让它工作。。。但是当我打开开发人员命令提示符并粘贴它时,它发出的命令工作得非常好,shell,visual-studio-code,environment-variables,cl,Shell,Visual Studio Code,Environment Variables,Cl,我已经设法将这个问题缩小到VS代码正在使用的shell中没有设置正确的环境变量(运行echo%INCLUDE%只是返回%INCLUDE%就证明了这一点) 现在我不知道开发者命令提示符与VS代码使用的普通Powershell终端有什么不同,所以我也不知道如何配置它(除了运行vcvvarsall.bat),但即使可以,每次我在VS代码中打开一个新终端时,环境变量都会再次重置自己 基本上,我所看到的解决这个问题的办法是: 在每个构建任务之前运行vcvvarsall.bat 不幸的是,我不太熟悉如何使用
echo%INCLUDE%
只是返回%INCLUDE%
就证明了这一点)
现在我不知道开发者命令提示符与VS代码使用的普通Powershell终端有什么不同,所以我也不知道如何配置它(除了运行vcvvarsall.bat
),但即使可以,每次我在VS代码中打开一个新终端时,环境变量都会再次重置自己
基本上,我所看到的解决这个问题的办法是:
vcvvarsall.bat
不幸的是,我不太熟悉如何使用tasks.json
配置文件在一行中执行多个命令
vcvarsall.bat
的全部效果是什么,因此我知道要设置哪些变量
如果有一个更简单的方法来实现我的目标,我会很高兴听到它。不管怎样,归根结底,我想知道如何配置VS代码,使我能够从IDE内部编译代码。经过一番探索,我找到了答案。我的设置(在
tasks.json
)如下所示:
"command": "&",
"args": [
"'D:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat';",
"cl.exe",
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
]
使用&
可以执行包含空格的路径。这导致我的vcvars32.bat
(其他人的位置可能不同)可以设置正确的变量,而无需手动输入<代码>允许您在PowerShell中一个接一个地执行多个命令。对我来说不起作用,但有助于找到一个可行的解决方案
使用任务类型“进程”
,然后将命令设置为开发人员命令提示符调用的批处理文件,将直接启动windows命令提示符(而不是通过powershell调用它)
第一个参数是“&”
,这意味着编译器将在开发人员命令提示符上下文中调用,而不仅仅是作为参数传递给批处理文件
>{
"version": "2.0.0",
"tasks": [
{
"type": "process",
"label": "cl.exe build active file",
"command": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat",
"args": [
"&"
"cl.exe",
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"problemMatcher": ["$msCompile"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}