1. 背景
VS Code只是一个代码编辑器,编译运行c/c++程序需要自己配置编译器。现不想使用MinGW的gcc或g++编译程序,而电脑本身有VS,故希望使用VS自带的cl.exe来进行编译。用于测试的C++程序如下所示:
#include <iostream>
using namespace std;
int main()
{
cout << "11" << endl;
return 0;
}
2. cl.exe配置
方法1:单次配置
打开windows的开始菜单,输入Native Tools Command Prompt,根据电脑版本选择双击打开X86 Native Tools Command Prompt或者X64 Native Tools Command Prompt。
// 打开VS Code,记得将C:\Users\Administrator\Desktop\test换成自己程序所在的文件夹
code C:\Users\Administrator\Desktop\test
在VS Code的中输入cl,检测环境配置是否正确。
若需要使用cl,每次都需通过该方法打开VS Code。直接通过VS Code图标来打开,会出现错误。
更详细的内容可以参考博客:VS:命令行运行C/C++程序(无须任何配置)
方法2:全局配置
在系统变量中添加cl.exe的相关路径。如此在所有的cmd或通过VS Code图片打开的终端都可用。注意:以下路径需根据自己的VS路径作相应修改。
//在Path中添加cl.exe所在文件夹路径。若未找到,直接VS的安装目录下搜索cl.exe即可
C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86;
//在系统变量中新建变量INCLUDE,添加cl.exe的包含目录
C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\shared;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\ucrt;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\um;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\winrt;
//在系统变量中新建变量LIB,添加cl.exe的库目录
C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x86;
C:\Program Files\Windows Kits\10\Lib\10.0.17763.0\um\x86;
C:\Program Files\Windows Kits\10\Lib\10.0.17763.0\ucrt\x86;
更详细的内容可以参考博客:VS:在windows上调用cl.exe编译运行C/C++程序
3. VS Code配置
打开所需编译的C++程序,点击F5,启动调试。在弹出的选项中选择C++ (Windows)和cl.exe - 生成和调试活动文件。此时VSCode自动生成launch.json和tasks.json。
自动生成的launch.json:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "cl.exe - 生成和调试活动文件",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"preLaunchTask": "cl.exe build active file"
}
]
}
自动生成的tasks.json:
{
"tasks": [
{
"type": "shell",
"label": "cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
]
}
],
"version": "2.0.0"
}
注意:
- launch.json中的preLaunchTask需与tasks.json中label一致。
- 若使用全局配置,在选择C++ (Windows)和cl.exe - 生成和调试活动文件时,无法自动生成launch.json和tasks.json,并出现如下错误:
解决方法1:
通过X86 Native Tools Command Prompt或者X64 Native Tools Command Prompt以VS开发人员的权限打开VS Code。
解决方法2:
调试时,选择C++ (Windows)和默认配置将上面的launch.json和tasks.json拷贝到.vscode文件夹中。