主要参考了https://blog.csdn.net/wa0jixu/article/details/104490659、https://www.zhihu.com/question/30315894、以及https://blog.csdn.net/callinglove/article/details/112283022?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242。
一、VSCode安装
官网下载:https://code.visualstudio.com/
下载安装即可,注意需要勾选“添加到环境变量”选项。
二、VSCode设置
1. 语言设置
VScode默认为英文。使用Ctrl+Shift+P,显示出配置显示语言的选项,然后选择安装中文简体。中文(简体)语言包安装完成后按提示重启即可。

2. C++必须的安装包
在应用商店中搜索并依次安装C/C++插件,跟安装语言包的方法一样。
推荐安装并启用以下插件:
【C/C++支持】C/C++
【程序运行环境】Code Runner
【自动补齐】C++ Intellisense
【Clang编译环境】C/C++ Clang Command Adapter
【调试工具】Native Debug
【静态检查工具】C/C++ Advanced Lint
三、构建C/C++编译环境
VSCode只是一个编辑器,本身并不支持编译运行功能。因此我们需要通过插件来配置编译运行环境,本文选用MinGW-W64+Clang环境。
1. 安装Clang
网址:https://releases.llvm.org/download.html
这里按电脑配置选择,我选择Pre-Built Binaries: Windows(64bit)(.sig),最终下载LLVM-11.0.0-win64.exe。
下载完成后安装,安装时选择“Add LLVM to the system PATH for all users”。安装完成后可能会提示“MSVC integration install failed”。这是因为Clang默认使用msvc工具链,但我们采用了MinGW,因此无视即可。装完后Win+R打开cmd,运行clang -v观察到以下结果则安装成功。
2. 安装MinGW
地址:https://sourceforge.net/projects/mingw-w64/files/
我选择了mingw-w64-install.exe,点击exe,安装在了E:\softwares\mingw-w64\。
直接运行,需要配置以下五个参数,注意别搞错了:
Version:指定版本号,按需选择,没有特殊需求就用最新版本;
Architecture:按操作系统来选,64位系统选择x86_64,32位系统选择i686;
Threads:设置线程标准,可选posix或win32;
Exception:设置异常处理标准,x86_64可选seh或sjlj,i686则为dwarf或sjlj;
Build revision:构建版本号,默认只有一个0,如果有多个选最大的即可。
之后一路next安装。
然后,把E:\softwares\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin添加到环境路径中。一路确定。
最后,装完后Win+R打开cmd,运行gcc -v,观察到以下结果,则安装成功。
四、VSCode工程配置
至此,VSCode下C/C++运行环境就搭建好了。
在某个文件夹新建能够在未来一直储存C++的文件夹。例如,D:\vscode c++。
然后,重启VSCode。打开“vscode c++”这个文件夹,在里面新建.vscode的文件夹。再在.vscode中新建两个.json文件——launch.json和tasks.json。代码如下。
1. launch.json
{// 使用 IntelliSense 了解相关属性。// 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "gcc.exe build and debug active file", // 配置名称,会显示在启动配置的下拉菜单中"type": "cppdbg", // 配置类型,这里只能为cppdbg"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 待调试的可执行程序路径"args": [], // 程序启动时的传参,按需求填即可"stopAtEntry": true, // 是否在main入口处打断点,一般选true"cwd": "${workspaceFolder}", // 调试程序时的工作路径"environment": [], // 环境变量设置"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台"MIMode": "gdb", // 指定调试器,可以为gdb或lldb。但windows下没有预编译好的lldb,还是老老实实gdb吧"miDebuggerPath": "C:\\TDM-GCC-64\\bin\\gdb.exe", // gdb的调用路径,\\为转义"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": false // 调试时是否忽略失败,当然要false}],"preLaunchTask": "gcc.exe build active file" // 调试开始前要执行的动作,一般为编译文件。此处内容应与tasks.json的taskName一致}]}
2. tasks.json
{"version": "2.0.0","tasks": [{"label": "gcc.exe build active file", // 任务名称,与launch.json的preLaunchTask相对应"type": "shell","command": "gcc", // 如果用MinGW,编译c用gcc,编译c++用g++"args": [ // 编译参数"${file}","-o", // 指定输出文件名,不加该参数则默认输出a.exe"${fileDirname}/${fileBasenameNoExtension}.exe", // 注意这里用/标识目录而不是\\"-g", // 支持gdb调试"-Og", // -Og 是在gcc 4.8版本引入的,按照源码自动确定优化等级,基本相当于没有优化"-Wall", // 开启额外的编译警告"-static-libgcc", // 静态链接"-fcolor-diagnostics","--target=x86_64-w64-mingw", // tasks.json的默认target为msvc,不加这一条就会找不到头文件"-std=c11" // c++最新标准为c++1z即c++17,C语言最新标准为c11,可根据需要自行修改],"group": {"kind": "build","isDefault": true // 设为false则可做到一个tasks.json配置多个编译指令},"presentation": {"echo": true,"reveal": "always", // 设置是否在“终端”中显示编译信息,可以为always,silent,never。没说的,always。"focus": false,"panel": "shared" // 不同的文件的编译信息共享一个终端面板},"problemMatcher": { // 编译错误输出配置"owner": "cpp","fileLocation": ["relative","/"],"pattern": {"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", // 正则表达式,用于描述在“问题”栏中显示的信息。"file": 1,"line": 2,"column": 3,"severity": 4,"message": 5}}}]}
五、测试
再次重启VSCode。在新建一个文件夹,用于储存.cpp文件,文件夹名字为cpp_source。里面再新建一个demo.cpp。
#include <iostream>
#include <vector>
#include <string>
int main(int argc, char *argv[])
{
std::cout << "Hello World" << std::endl;
std::vector<std::string> cities{"JiNan", "BeiJing", "ShenZhen"};
for (auto& city : cities)
{
std::cout << city << std::endl;
}
return 0;
}
然后运行。结果如下。
