觉得VS2022有点重,便在vscode中写C++项目,收集资料,结合ai整理出记录
vscode中配置MSVC
一、前置知识(理解环境配置的基础)
-
C/C++编译器与IDE的区别
- 编译器:负责将代码编译为可执行文件,常用类型包括GCC、MinGW、MSVC(本文核心使用MSVC);
- IDE:集成开发环境(如Codeblocks、VS Code、Dev C++),仅提供编辑、调试界面,需依赖编译器才能运行代码;
- 兼容性:仅使用标准库的代码可跨编译器运行,使用特定编译器独有库的代码需对应编译器(甚至版本)。
-
Windows环境变量详解
- 定义:操作系统中存储应用程序所需信息的对象,可理解为“路径指针”;
- 分类:
- 用户变量:仅对当前登录用户生效,优先级高于系统变量;
- 系统变量:对所有用户生效;
- 核心作用:简化路径调用(如将exe所在目录加入
Path变量后,无需输入完整路径即可调用exe); - 关键操作:
- 查看变量:命令行输入
echo %变量名%(如echo %SystemRoot%,输出C:\WINDOWS); - 重要变量:
Path(存储二进制可执行文件目录,多以“bin”结尾)、自定义变量(如JAVA_HOME,用于统一路径引用)。
- 查看变量:命令行输入
二、安装步骤(环境配置的前提)
-
安装VS Code
- 操作:自行下载安装,安装后自动添加环境变量,需重启电脑生效。
-
安装Visual Studio(核心依赖)
- 版本选择:下载Visual Studio Installer,选择Visual Studio Community 2022(17.7.4版)(免费,适用于学生、开源参与者);
- 必选组件:勾选**“使用C的桌面开发”**(该组件包含MSVC工具链和Windows SDK,是编译C代码的核心);
- 系统适配(Windows 10用户):在“安装详细信息”中,取消勾选“Windows 11 SDK”,并勾选“Windows 10 SDK”(如版本10.0.20348.0);
- 安装路径:
- 2022版默认路径:
C:\Program Files\Microsoft Visual Studio\2022\Community; - 2019及以下版路径:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community(路径含“(x86)”);
- 2022版默认路径:
三、配置系统环境变量(VS Code编译的关键)
添加MSVC编译器(cl.exe)所在的目录,MSVC,win sdk的头文件和库文件所在目录
需添加7条系统环境变量,其中前4条为基础变量(需按实际安装路径修改),后3条依赖前4条的路径,具体如下表:
| 变量类别 | 变量名 | 变量值(以2022版为例) |
|---|---|---|
| 基础变量 | VCTools(Visual Studio的VC工具目录) | C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools |
| 基础变量 | WIN10KITS | C:\Program Files (x86)\Windows Kits\10 |
| 基础变量 | MSVC_VERSION | 14.37.32822 |
| 基础变量 | WIN_SDK_VERSION | 10.0.20348.0 |
| 核心变量 | INCLUDE | %VCTools%\MSVC%MSVC_VERSION%\include;%WIN10KITS%\Include%WIN_SDK_VERSION%\ucrt;%WIN10KITS%\Include%WIN_SDK_VERSION%\um;%WIN10KITS%\Include%WIN_SDK_VERSION%\shared; |
| 核心变量 | LIB | %WIN10KITS%\Lib%WIN_SDK_VERSION%\um\x64;%WIN10KITS%\Lib%WIN_SDK_VERSION%\ucrt\x64;%VCTools%\MSVC%MSVC_VERSION%\lib\x64; |
| Path新增 | Path | %VCTools%\MSVC%MSVC_VERSION%\bin\Hostx64\x64 |
四、验证环境变量(确保配置有效)
打开Windows命令提示符,执行以下命令验证配置是否成功,输出结果需与预期一致:
-
输入
cl:输出“用于x64的Microsoft ® C/C++优化编译器19.37.32824版 版权所有© Microsoft Corporation”,说明编译器可正常调用; -
输入
echo %MSVC_VERSION%:输出设定的MSVC版本(如14.37.32822); -
输入
echo %WIN_SDK_VERSION%:输出设定的SDK版本(如10.0.20348.0); -
输入
echo %INCLUDE%:输出完整的头文件目录列表,且路径与配置的一致。
五、VS Code配置(生成编译所需文件)
-
创建项目目录与文件
- 打开命令提示符,依次执行以下命令:
mkdir CppTest:创建名为“CppTest”的项目文件夹;cd CppTest:进入该文件夹;type nul > hello.cpp:创建空的C++文件“hello.cpp”;code .:用VS Code打开当前目录(弹出“信任文件夹”弹窗时,选择“信任”)。
- 打开命令提示符,依次执行以下命令:
-
安装必要插件
- 在VS Code扩展市场搜索并安装C/C++ Extension Pack
-
生成配置文件
-
生成
c_cpp_properties.json:- 在VS Code顶部搜索框输入
> Edit Configurations (UI)(需先打开hello.cpp文件); - 点击高亮选项,弹出配置界面后直接关闭,VS Code会在项目目录下生成隐藏文件夹
.vscode,并自动创建c_cpp_properties.json(默认配置compilerPath为cl.exe,cppStandard为c++11);
- 在VS Code顶部搜索框输入
-
生成
tasks.json:- 在搜索框输入
> Default Build Task; - 选择
C/C++ cl.exe 生成活动文件,VS Code会在.vscode文件夹中自动生成tasks.json(包含编译命令cl.exe及参数,如/zi(生成调试信息)、/EHsc(启用C++异常处理))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/nologo",
"/Fe${workspaceFolder}\\temp_file\\${fileBasenameNoExtension}.exe",
"/Fo${workspaceFolder}\\temp_file\\${fileBasenameNoExtension}.obj",
"/Fd${workspaceFolder}\\temp_file\\${fileBasenameNoExtension}.pdb",
"${file}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: cl.exe"
}
]
} - 在搜索框输入
-
生成
launch.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/temp_file/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"console": "externalTerminal",
"preLaunchTask": "C/C++: cl.exe build active file"
}
]
}
这是用来启动 tasks.json生成的exe文件
其中preLaunchTask参数是指在启动launch.json文件里的工具,先启动对应tasks.json里的工具 -
六、运行测试(验证环境是否可用)
-
编写测试代码:在hello.cpp中写入以下Hello World程序:
1
2
3
4
5
using namespace std;
void main(){
cout<<"Hello World"<<endl;
} -
执行程序:
- 点击VS Code菜单栏“运行”→“以非调试模式运行”;
- 弹出调试器选择框,选择“C/C++ (Windows)”;
- 结果:控制台输出“Hello World”,说明环境配置成功。
七、常见疑问
-
为何Visual Studio无需手动配置即可运行C++程序?
- 答:Visual Studio在创建项目时,会自动配置头文件目录、库目录等(如“VC++目录”中的
$(VC_LibraryPath_x64)、$(WindowsSDK_IncludePath)等内部变量),而VS Code需手动定义这些路径。
- 答:Visual Studio在创建项目时,会自动配置头文件目录、库目录等(如“VC++目录”中的
关键问题
问题1:在Windows 10系统中安装Visual Studio以配置VS Code的C++(MSVC)环境时,需注意哪些关键选项,避免后续编译出错?
答:需注意3个关键选项:
-
版本选择:选择Visual Studio Community 2022(17.7.4版,免费且功能满足需求),避免安装付费的Enterprise或Professional版;
-
组件勾选:必须勾选**“使用C的桌面开发”**(该组件包含MSVC工具链和Windows SDK,是编译C代码的核心依赖,若不勾选则缺少编译器和库文件);
-
SDK适配:在“安装详细信息”中,取消勾选“Windows 11 SDK”,并勾选Windows 10 SDK(如版本10.0.20348.0)(Windows 11 SDK在Windows 10系统中兼容性未知,可能导致编译失败)。
问题2:配置VS Code的C++(MSVC)环境时,为何必须添加INCLUDE和LIB这两个系统环境变量?它们的路径由哪些部分构成(以2022版为例)?
答:(1)添加原因:
INCLUDE和LIB是MSVC编译器和链接器的核心依赖变量——INCLUDE用于告诉编译器头文件(.h)的查找路径,确保代码中#include <iostream>等指令能找到对应文件;LIB用于告诉链接器库文件(.lib)的查找路径,确保编译后的目标文件能正确链接系统或第三方库,避免“无法解析的外部符号”等错误。
(2)路径构成(以2022版、MSVC版本14.37.32822、SDK版本10.0.20348.0为例):
-
INCLUDE路径:%VCTools%\MSVC\%MSVC_VERSION%\include(MSVC自带头文件) +%WIN10KITS%\Include\%WIN_SDK_VERSION%\ucrt(SDK通用CRT头文件) +%WIN10KITS%\Include\%WIN_SDK_VERSION%\um(SDK用户模式头文件) +%WIN10KITS%\Include\%WIN_SDK_VERSION%\shared(SDK共享头文件); -
LIB路径:%WIN10KITS%\Lib\%WIN_SDK_VERSION%\um\x64(SDK用户模式库文件,x64架构) +%WIN10KITS%\Lib\%WIN_SDK_VERSION%\ucrt\x64(SDK通用CRT库文件,x64架构) +%VCTools%\MSVC\%MSVC_VERSION%\lib\x64(MSVC自带库文件,x64架构)。
问题3:在VS Code中完成系统环境变量配置后,如何通过具体操作生成编译所需的配置文件,并成功运行第一个C++程序?
答:具体步骤分3步:
-
生成配置文件:
- 生成
c_cpp_properties.json:打开项目中的hello.cpp文件,在VS Code顶部搜索框输入> Edit Configurations (UI),点击高亮选项后直接关闭,系统会自动在.vscode文件夹中生成该文件(默认配置编译器路径为cl.exe,适配MSVC); - 生成
tasks.json:在搜索框输入> Default Build Task,选择C/C++ cl.exe 生成活动文件,系统会自动生成该文件(包含cl.exe的编译参数,如/Fe${fileDirname}\\${fileBasenameNoExtension}.exe,指定输出exe路径);
- 生成
-
编写测试代码:在hello.cpp中写入Hello World程序(需包含
<iostream>头文件,使用cout输出); -
运行程序:
- 点击VS Code菜单栏“运行”→“以非调试模式运行”;
- 在弹出的调试器选择框中,选择“C/C++ (Windows)”;
- 查看结果:控制台输出“Hello World”,说明程序运行成功,环境配置完成。