目录
最终效果图
前言
本人重装系统的频率比较高,所以配置vscode中c/c++环境的经验比较丰富,特此写下此博客供大家参考
下载安装Vscode
-
Visual studio code <—点击直接下载
-
可自定义安装路径
-
建议全部勾上
资源取自Vscode官方网站,如下图所示
安装Vscode相关插件
- 打开vscode后应用检测到系统语言为中文可能会推荐如图所示的汉化插件
- 如果没有也可以去手动下载安装官方提供的汉化插件,重启应用生效
在扩展商店可直接下载安装以下插件
- C/C++ (此插件是必须的)
网速较差时可能会卡住,但也支持离线下载安装。(能够直接在扩展商店下载时无需离线下载该vsix插件)
离线下载安装步骤:
下图中的官方github下载地址
进入官方网站后下滑到此处即可下载
云盘下载(均为1.5.1版本)
蓝奏云 密码: dk6m
百度云盘 提取码: fts7
云盘内的资源均是压缩后的,下载解压后可得到vsix文件即所需的工具。
点击左侧的扩展按钮后照下图操作
找到下载的vsix文件选中即可安装
注:cpptools-win32.vsix是后续调试(debug)过程所必需的,如果在商店在线安装成功可跳过上述离线下载安装步骤
- Visual Studio IntelliCode(Microsoft官方开发的智能提示插件)
- C/C++ Compile Run(按F6轻松编译和运行单个c/c++文件,支持外部终端显示运行结果)
- C/C++ Snippets Pro (加快编写速度,试试在输入for后按下Tab键)
- vscode-icons (它可以将同一类型的文件以相同图标的方式,让程序员可以直观的选择文件,提高生产效率。)
- background-cover (添加全局背景的插件,背景图片可自定义)
- Fix VSCode Checksums (解决在修改vscode核心文件后顶部显示不受支持[Unsupported]的问题)
- Code Runner (支持多种语言的编译与运行,右上角多出的三角形按钮即运行按钮)
下载Mingw-w64编译器
方法一(推荐)【25.3.7更新】
从winlibs.com下载包含LLVM/Clang/LLD/LLDB 19.1.7 + MinGW-w64 12.0.0在内的UCRT版本。
往下翻到Release versions部分,下载上面最新的(LATEST)win64版本即可,其中不仅包含gcc, g++, gdb 还包括clang编译器和clangd语言服务器,他们共用该软件包中自带的c/c++标准库文件,对于需要在win端使用 vim/nvim 配置语言服务器(lsp)以实现代码提示很有帮助,因为官方下载源的clangd总是找不到标准库如iostream, stdlib等。
解压文件后目录结构如下(llvm_mingw_ucrt是解压并重命名后的文件)
./llvm_mingw_ucrt
└── mingw64
├── bin
├── include
├── lib
├── libexec
├── share
├── version_info.txt
└── x86_64-w64-mingw32
解压后将其中的\mingw64\bin目录完整路径放入环境变量中即可。下面标红部分为我的mingw编译器路径
方法二(原方法,不推荐)
- 通过官方安装程序安装(安装程序下载资源的速度非常非常慢)
MinGW-W64-install.exe
64位操作系统
32位操作系统
这里可自定义安装地址(注:选好地址后将其复制,后续步骤会用到)
- 从官方的代码托管平台SourceForge下载,地址
-
64位操作系统
- x86_64-posix-seh 新研发的,性能好但仅支持64位(建议选择此项)
蓝奏云下载(密码:dqzu)
百度云下载(提取码:x5uh) - x86_64-posix-sjlj 比较古老,但稳定性较好,且支持32和64位
- x86_64-posix-seh 新研发的,性能好但仅支持64位(建议选择此项)
-
32位操作系统
- i686-posix-dwarf 性能优于sjlj(建议选择此项)
- i686-posix-sjlj
-
- 官网,可选择开源项目mingw-builds。下图仓库发布链接地址
参数详解:
i686 和 x86_64 指的是CPU架构,前者指32位、后者指64位
posix 或 win32指的是线程模型,posix是 UNIX 系统的一个 API 设计标准,很多类 UNIX 系统也在支持兼容这个标准,如 Linux 操作系统。如果在 Windows 下开发 Linux 应用程序,则选择 posix;win32,是 Windows 系统下一个 API 设计标准,如果开发 Windows 平台下的应用程序,就需要选择 win32;
seh和dwarf指的是异常处理模型,seh只支持64位,性能较好,而dawrf只支持32位。
msvcrt是传统的运行库,而ucrt是Windows 10通用C运行时(UCRT)的替代方案。UCRT可以安装在早期版本的Windows上,如果编写旧版本的Windows程序,则MSVCRT是更好的选择。但是,如果目标是最新的Windows版本,则UCRT作为运行库是更好的选择,因为它的编写是为了更好地支持最新的Windows版本,并提供更好的标准一致性。
这里我选择的是x86_64-13.2.0-release-posix-seh-ucrt-rt_v11-rev0.7z
将下载得到的压缩包解压到自定义位置(可参考上述通过官方安装程序安装的默认位置为C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0)
注:一定要复制其路径,以便后续配置环境变量。
以上mingw-w64安装参考vscode官方文档
配置环境变量
-
进入到复制的地址,并打开其下的mingw64/bin,将该地址复制。
示例:
-
打开文件管理器的此电脑界面,右击打开属性。
-
点击高级系统设置
-
点击环境变量
-
点击下方的系统变量内的Path后,点击编辑
-
点击新建后左边输入之前复制的mingw的地址,点击确定。
注:此地址必定以bin结尾,否则必须回去重新复制该地址。如果后续有需要移动mingw-w64编译器的位置,请将环境变量中的地址更新一下,否则编译时会出现“不是内部或外部命令,也不是可运行的程序或批处理文件。”或无法识别指令等类似错误。
vscode的c/c++环境到此就配置结束了
下面将验证安装配置是否成功
按win + R打开运行后输入cmd
打开命令提示符,输入gcc --version
出现类似下图的结果则证明配置成功
编译&运行代码
继续在cmd中输入以下代码,每行输出后回车
mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .
将会在 cmd中当前路径\projects\helloworld下打开vscode
例如下图cmd中当前路径为C:\Users\xl
在左侧的资源管理器页面空白处右击新建文件,命名为helloworld.cpp
输入以下代码
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
按Ctrl + S保存
手动输入指令编译&运行
单个c/cpp文件
在终端上含有helloworld.cpp的路径上输入g++ -g helloworld.cpp -o test
回车后会在当前位置生成名为test.exe的可执行文件,直接输入test
或test.exe
即可在当前终端上运行。
例如下图在D:\test\projects\helloworld下有helloworld.cpp文件,则可在该位置使用g++命令编译当前位置下的cpp文件。
多个c/cpp文件
(注:一定要保证helloworld.cpp在当前路径下,否则会导致g++编译器无法找到该cpp文件。编译&运行c文件时只需将g++改为gcc即可。带-g参数生成的文件附带调试信息,更大一些,如无需调试可直接省略该参数)
以上方法是手动完成编译&运行的,而通过插件编译&运行本质上也是在终端上输入相应指令,插件只是单纯的代替我们自动地完成了该过程。
优化插件的设置
使用C/C++ Compile Run插件
注:仅支持单个c/cpp文件编译,默认在集成终端上运行,可设置为在外部终端运行
- 按F6即可运行,并在vscode的集成终端上显示结果
- 也可以设置成和vs2019一样在外部终端上显示运行结果,操作步骤如下:进入顶部的文件>首选项>设置>用户,然后在搜索栏中输入
C-cpp-compile-run: run-in-external-terminal
,勾上该选项即可。
- 重新按F6运行即可在外部终端上显示
使用Code Runner插件
默认只支持编译单文件并在输出栏里显示运行结果(无法输入),但是可设置为支持多文件编译并在集成终端中运行(可输入),目前还不支持外部终端运行
将Code Runner设置为在集成终端上运行
- 在设置中输入
Code-runner: Run In Terminal
,勾上该选项即可使代码运行在集成终端上
将Code Runner设置为支持编译&运行多个文件(仍然支持原来的单文件编译)
-
在设置中输入
code-runner.executorMap
,点击在settings.json中编辑
-
将其中cpp和c中的
$fileName
替换成*.cpp
和*.c
-
替换后如下图所示
注:该工作文件夹(如图中的multipleFileCompile文件夹)中将不能再直接放其他无关的cpp或c文件,因为前面的更改将会导致编译器编译工作目录下的所有cpp文件,但是可以将无关的cpp或c文件放在工作目录中新建的文件夹下
编译&运行
单文件:
回到要运行的cpp文件页面点击右上角的三角形符号即可运行(快捷键为Ctrl + Alt + N)
更改设置后该插件同样支持多文件编译&运行
调试(debug)
以下教程使用C/C++插件调试,并未使用C/C++ Runner插件,如下载了C/C++ Runner插件请禁用或卸载后,再删除原来在左侧资源管理器生成的.vscode文件后再试(在调试时插件会自动创建.vscode文件)。
单文件调试
-
在cpp文件页面打上断点后按F5后选中C++(GDB/LLDB)
-
继续选中g++(如果是c文件调试可选择gcc,此处为cpp文件所以选择g++)
-
等待程序运转,出现此界面(命中断点)则说明成功进入调试
多文件调试
测试以下三个文件
//swap.h
void swap(int &, int &);
//swap.cpp
#include "swap.h"
void swap(int &a, int &b)
{
a += b; //a->a+b b->b
b = a - b; //b->a+b-b=a a->a+b
a -= b; //a->a+b-a=b b->a
}
//main.cpp
#include <iostream>
#include "swap.h"
using std::cout;
using std::endl;
int main()
{
int n1 = 2, n2 = 9;
cout << "before swap\nn1 = " << n1 << " n2 = " << n2 << endl;
swap(n1, n2);
cout << "after swap\nn1 = " << n1 << " n2 = " << n2 << endl;
return 0;
}
前面的步骤和单文件编译一样,只需要将生成的task.json文件中第九行的${file}
改为${fileDirname}/*.cpp
就可以调试了
(其中的/
可以换成\\
)
设置为调试时在外部终端运行
在调试时产生的launch.json文件中,将exterminalConsole的参数由默认的false改为true即可(该参数为false则会在集成终端上运行)
美化
设置全局背景
- 装上前面提过的background-cover插件后点击右下角的第二个按钮后即可选择背景图以及调整透明度
- 当提示“Code安装似乎损坏、请重新安装”并且顶部显示不受支持时可通过插件上面提到过的Fix VSCode Checksums插件解决
- 按下F1后在输入框内输入fix,并选择
FixChecksums:Apply
,重启应用即可
下载字体(ttf文件)
安装字体
- 双击ttf文件后点击安装
设置Vscode中的字体
- 打开Vscode后按Ctrl + Shift + R打开命令面板,输入settings后选择打开设置(UI)
- 在 用户>文本编辑器>字体>Font Family中将自己需要的字体添加到最前方即可(注:字体名中带空格的需要用引号‘’)
连体字体设置
vscode的连体字体如Fira Code默认为关闭状态,需要手动开启。同样在字体下,找到Font Ligatures点击在settings.json中编辑
将参数设置为true后重启即可