最近开始着手 C++ 项目开发,在折腾了一番 VSCode 配置后,终于能顺畅地写代码了。为了防止日后忘记这些步骤,赶紧记录下来,方便自己复盘。
一、为什么选 VSCode?
虽然目前我会使用 Microsoft Visual Studio进行开发,但我也需要一个轻量、跨平台且可高度自定义的开发环境(日后可能接手Linux的项目)。Visual Studio 虽然强大,但体积庞大、启动慢,适合大型项目;而 VSCode 体积小、插件生态丰富、支持多种操作系统,搭配编译器后完全能满足中小型 C++ 项目的开发需求。
二、配置过程详解
1. 下载安装 VSCode
- 官网下载地址:Visual Studio Code - Code Editing. Redefined
- 按系统版本(Windows/macOS/Linux)下载安装包,一路默认安装即可。
2. 安装 C/C++ 插件
- 打开 VSCode,快捷键
Ctrl+Shift+X
调出扩展商店。 - 搜索 “C/C++”,安装微软官方的 C/C++;C/C++ Themes;C/C++ Extension Pack(包含调试、智能提示等核心功能)。
3. 配置编译环境(以 MinGW 为例)
① 安装 MinGW 编译器
- 下载地址:MinGW-w64
- 选择 64 位版本(x86_64),安装时确保勾选
gcc
、g++
、make
等组件。 - 安装完成后,找到安装路径(如
C:\mingw64\bin
)。
② 添加环境变量
- Windows:右键 “此电脑”→“属性”→“高级系统设置”→“环境变量”→在
PATH
中添加 MinGW 的bin
目录。 - 验证:打开命令行,输入
gcc --version
,若显示版本号则安装成功。
(注:另有通过msys2安装MinGW64的方法,有需要自行搜索)
4. 配置 c_cpp_properties.json
这个文件主要用于配置 C/C++ 扩展的 IntelliSense 功能,让代码智能提示更准确。(一般默认)
- 快捷键
Ctrl+Shift+P(或F1
)
,输入 “C/C++: Edit Configurations (JSON)”,会自动生成.vscode/c_cpp_properties.json
文件,可直接进行代码修改。 - 快捷键
Ctrl+Shift+P(或F1
)
,输入 “C/C++: Edit Configurations (UI)”,可以弹出配置窗口,间接修改代码。- 配置编译器路径:在 “编译器路径” 一栏,点击选择编译器,比如选择之前安装的 MinGW 中的
gcc.exe
或g++
路径(像C:/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gcc.exe
)。这一步能让 IntelliSense 知晓使用哪个编译器来分析代码。 - 选择 IntelliSense 模式:(一般默认)根据编译器和系统选择合适的模式,例如
windows - gcc - x64
。不同的模式会影响代码智能提示的准确性。 - 设置 C 和 C++ 标准:在 “C 标准” 和 “C++ 标准” 下拉框中选择你想要使用的标准版本,如
c17
和c++17
。 - 添加包含路径:在 “包含路径” 区域点击 “添加项”,添加编译器查找头文件的位置。常见的有
${workspaceFolder}/**
(表示当前工作区的所有子目录),以及 MinGW 的头文件目录(如C:/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/include
)。 - 设置预处理器定义:在 “预处理器定义” 区域点击 “添加项”,添加类似
_DEBUG
、UNICODE
、_UNICODE
等预处理器定义,它们类似于#define
指令。 - 保存配置:完成各项配置后,关闭配置窗口,VSCode 会自动更新
.vscode/c_cpp_properties.json
文件。
- 配置编译器路径:在 “编译器路径” 一栏,点击选择编译器,比如选择之前安装的 MinGW 中的
(注:该步骤只影响编辑器,不对编译产生影响。)
5. 配置 VSCode 任务(tasks.json)
- 新建 C++ 项目文件夹,在 VSCode 中打开。
- 快捷键
Ctrl+Shift+P
,输入 “Tasks: Configure Default Build Task”,选择 “C/C++: gcc.exe 生成活动文件”。 - 自动生成的
.vscode/tasks.json
内容如下(可按需调整):
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"group": "build",
"problemMatcher": ["$gcc"]
}
]
}
command
:使用 g++ 编译 C++ 文件(.cpp),C 文件(.c)可用gcc
。args
:-g
添加调试信息,${file}
表示当前文件,-o
指定输出路径。
5. 配置调试(launch.json)
- 快捷键
F5
启动调试,选择 “C++ (GDB/LLDB)”,生成.vscode/launch.json
:
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "gdb.exe" // 确保gdb在MinGW的bin目录中
}
]
}
externalConsole
:开启独立控制台窗口,方便查看输入输出。
5. 配置外部库
在配置 C/C++ 插件的编译环境时,如果要使用外部库,需要在 tasks.json
和 c_cpp_properties.json
中进行相应配置:
1. c_cpp_properties.json 配置
配置 IntelliSense,让它能够找到外部库的头文件,从而提供准确的代码智能提示。
假设你有一个外部库,其头文件存于 /path/to/library/include
目录,库文件存于 /path/to/library/lib
目录,则修改c_cpp_properties.json
:
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"/path/to/library/include" // 添加外部库的头文件路径
],
2. tasks.json 配置
在 tasks.json
里,需要指定链接外部库的路径和库名。
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-I", "/path/to/library/include", // 指定头文件搜索路径
"-L", "/path/to/library/lib", // 指定库文件搜索路径
"-l", "library_name" // 指定要链接的库名
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
]
}
]
}
配置说明
-I
参数:用于指定头文件的搜索路径,这样编译器就能找到外部库的头文件。-L
参数:用于指定库文件的搜索路径,编译器会在此路径下查找要链接的库文件。-l
参数:用于指定要链接的库名。注意,在写库名时不需要加上lib
前缀和.a
或.so
后缀。例如,若库文件名为libexample.a
,则这里写example
。
示例
假设你使用的是 SDL2 库,其头文件在 C:\SDL2\include
目录,库文件在 C:\SDL2\lib\x64
目录,库名为 SDL2
和 SDL2main
,那么 tasks.json
可以这样配置:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-I", "C:/SDL2/include",
"-L", "C:/SDL2/lib/x64",
"-l", "SDL2",
"-l", "SDL2main"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
]
}
]
}
同时,c_cpp_properties.json
中需要添加头文件路径:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/SDL2/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "C:/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gcc.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
三、总结
VSCode 的配置过程不算复杂,但需要耐心处理编译器路径、任务配置等细节。一旦配置完成,轻量高效的开发体验能大大提升编码效率。如果你偏爱简洁灵活的环境,或是需要跨平台开发,VSCode 是不错的选择;而如果是大型项目或依赖 Windows 特定功能,Visual Studio 仍是首选。
有关 VSCode中使用CMake、Vcpkg的内容有需要时再记录。
有了这次记录,以后再搭建环境时就不用重复踩坑了。代码之路漫漫,先把工具顺手了,才能专注于逻辑本身~ ✨