vscode中配置MSVC
本文介绍了在VS Code中配置MSVC工具链开发C++项目的详细流程。首先区分编译器和IDE的概念,说明Windows环境变量的作用。然后逐步指导安装VS Code和Visual Studio(选择C++桌面开发组件)。核心部分是配置7个系统环境变量,包括基础路径和关键编译参数。接着通过命令行验证环境配置有效性。最后在VS Code中创建项目、安装插件,并自动生成三个配置文件(c_cpp_pro
觉得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++异常处理))
{ "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
{ "version": "0.2.0", "configurations": [ { "name": "(Windows) Launch", "type": "cppvsdbg", "request": "launch", "program": "${fileDirname}/${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程序:
#include <iostream> 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”,说明程序运行成功,环境配置完成。
更多推荐
所有评论(0)