觉得VS2022有点重,便在vscode中写C++项目,收集资料,结合ai整理出记录

vscode中配置MSVC

一、前置知识(理解环境配置的基础)
  1. C/C++编译器与IDE的区别

    • 编译器:负责将代码编译为可执行文件,常用类型包括GCCMinGWMSVC(本文核心使用MSVC);
    • IDE:集成开发环境(如Codeblocks、VS Code、Dev C++),仅提供编辑、调试界面,需依赖编译器才能运行代码;
    • 兼容性:仅使用标准库的代码可跨编译器运行,使用特定编译器独有库的代码需对应编译器(甚至版本)。
  2. Windows环境变量详解

    • 定义:操作系统中存储应用程序所需信息的对象,可理解为“路径指针”;
    • 分类:
      • 用户变量:仅对当前登录用户生效,优先级高于系统变量;
      • 系统变量:对所有用户生效;
    • 核心作用:简化路径调用(如将exe所在目录加入Path变量后,无需输入完整路径即可调用exe);
    • 关键操作:
      • 查看变量:命令行输入echo %变量名%(如echo %SystemRoot%,输出C:\WINDOWS);
      • 重要变量:Path(存储二进制可执行文件目录,多以“bin”结尾)、自定义变量(如JAVA_HOME,用于统一路径引用)。
二、安装步骤(环境配置的前提)
  1. 安装VS Code
    • 操作:自行下载安装,安装后自动添加环境变量,需重启电脑生效。
  2. 安装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)”);
三、配置系统环境变量(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命令提示符,执行以下命令验证配置是否成功,输出结果需与预期一致:

  1. 输入cl:输出“用于x64的Microsoft ® C/C++优化编译器19.37.32824版 版权所有© Microsoft Corporation”,说明编译器可正常调用;
  2. 输入echo %MSVC_VERSION%:输出设定的MSVC版本(如14.37.32822);
  3. 输入echo %WIN_SDK_VERSION%:输出设定的SDK版本(如10.0.20348.0);
  4. 输入echo %INCLUDE%:输出完整的头文件目录列表,且路径与配置的一致。
五、VS Code配置(生成编译所需文件)
  1. 创建项目目录与文件

    • 打开命令提示符,依次执行以下命令:
      1. mkdir CppTest:创建名为“CppTest”的项目文件夹;
      2. cd CppTest:进入该文件夹;
      3. type nul > hello.cpp:创建空的C++文件“hello.cpp”;
      4. code .:用VS Code打开当前目录(弹出“信任文件夹”弹窗时,选择“信任”)。
  2. 安装必要插件

    • 在VS Code扩展市场搜索并安装C/C++ Extension Pack
  3. 生成配置文件

    • 生成c_cpp_properties.json

      1. 在VS Code顶部搜索框输入> Edit Configurations (UI)(需先打开hello.cpp文件);
      2. 点击高亮选项,弹出配置界面后直接关闭,VS Code会在项目目录下生成隐藏文件夹.vscode,并自动创建c_cpp_properties.json(默认配置compilerPathcl.execppStandardc++11);
    • 生成tasks.json

      1. 在搜索框输入> Default Build Task
      2. 选择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里的工具
    
六、运行测试(验证环境是否可用)
  1. 编写测试代码:在hello.cpp中写入以下Hello World程序:
    #include <iostream>
    using namespace std;
    void main(){
        cout<<"Hello World"<<endl;
    }
    
  2. 执行程序
    • 点击VS Code菜单栏“运行”→“以非调试模式运行”;
    • 弹出调试器选择框,选择“C/C++ (Windows)”;
    • 结果:控制台输出“Hello World”,说明环境配置成功。
七、常见疑问
  1. 为何Visual Studio无需手动配置即可运行C++程序?
    • 答:Visual Studio在创建项目时,会自动配置头文件目录、库目录等(如“VC++目录”中的$(VC_LibraryPath_x64)$(WindowsSDK_IncludePath)等内部变量),而VS Code需手动定义这些路径。

关键问题

问题1:在Windows 10系统中安装Visual Studio以配置VS Code的C++(MSVC)环境时,需注意哪些关键选项,避免后续编译出错?

答:需注意3个关键选项:

  1. 版本选择:选择Visual Studio Community 2022(17.7.4版,免费且功能满足需求),避免安装付费的Enterprise或Professional版;
  2. 组件勾选:必须勾选**“使用C++的桌面开发”**(该组件包含MSVC工具链和Windows SDK,是编译C++代码的核心依赖,若不勾选则缺少编译器和库文件);
  3. 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)添加原因:
INCLUDELIB是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步:

  1. 生成配置文件

    • 生成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路径);
  2. 编写测试代码:在hello.cpp中写入Hello World程序(需包含<iostream>头文件,使用cout输出);

  3. 运行程序

    • 点击VS Code菜单栏“运行”→“以非调试模式运行”;
    • 在弹出的调试器选择框中,选择“C/C++ (Windows)”;
    • 查看结果:控制台输出“Hello World”,说明程序运行成功,环境配置完成。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐