前言
近几年都是用vscode 做IDE,涉及C++编程,在Linux上也没涉及很复杂的配置操作,大的工程有cmake, 单文件直接裸用gcc 编。今天想windows环境下部署c++环境,实话说已经N多年没在win平台用过C++了,相关记忆停留到上学时期的dev c++ IDE + win 版gcc编译器的安装。搜了半小时,发现现在在csdn上相关教程内容质量堪忧,要么乱要么老。
最后还是按照官方教程(yyds, 永远紧跟官方指南,不要一开始就baidu)走了一遍流程,过程很顺利,希望能给相关的同学一些参考。
本文参考的主流程:
https://code.visualstudio.com/docs/cpp/config-mingw
具体过程
-
vscode安装和C++插件安装。
略。 -
MSYS2安装
msys2 是一个在 Windows 上实现类 Unix/Linux 命令行环境的工具集。 他就是在windows上运行linux bash环境的工具包。
去MSYS2官网按照它的安装指导进行安装。
https://www.msys2.org/
提供了多种版本的,这边选择exe版本的进行安装。
安装包被托管到了github。如果下载不畅,可以去国内的镜像站点下载:
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/
在其中,找到名为 msys2-<架构>-<日期>.exe 的文件(如 msys2-x86_64-20141113.exe),下载安装即可。当前最新的为20230718版本。
按照安装向导安装即可,本人管理员权限,安装到了C:\msys64 中。
安装完成后,开始菜单搜索能找到:
环境之间的差异主要是环境变量、默认编译器/链接器、体系结构、使用的系统库等。一开始提到的官方教程提到,可以使用UCRT版本启动Bash环境。
在该环境下,MSYS2 使用 Pacman 进行软件包管理(包括 安装、更新、卸载等),类似于Linux 中的 apt 等
下面列写一些常用的命令:
pacman -Suy 更新软件包
pacman -Q 列出已安装的软件包
pacman -R 卸载软件包
pacman -U 从本地安装软件包
这块儿可以用 --help 自行摸索。 -
安装gcc编译器
打开一个bash环境, 如MSYS2 UCRT64。
pacman -S mingw-w64-ucrt-x86_64-gcc
安装完成后,运行gcc-v 发现已经安装了最新版本的gcc了!
再顺手安装一下工具包,小白还是不要选择,全安装了吧(我全都要)。
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
-
配置路径
搜索栏搜索“环境变量”, 选择 “编辑系统环境变量”,点击环境变量, 到如下界面,编辑path:
点击新建,把bin地址填入,如下, 点击确定,添加成功:
-
检查安装结果
打开一个bash环境,gdb是前面toolchain 安装时候安装的,最好安装下。
gcc --version
g++ --version
gdb --version
则应该显示正确的版本信息。 -
配置vscode
做完上述步骤后,打开vscode , 建立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;
}
点击右上角的Run符号,系统即可检测到新安装的编译器,参考官网的说明,非常方便。
运行成功后,会自动创建一个 task.json,这里面是一些build时候的配置信息,可以手动修改。熟悉g++指令的一下子就知道里面的配置项是什么了。
变量等说明参考:Variables Reference
- debug
debug方式与linux是通用的,这种方式对应的文件为 launch.json,也可以配置。可以参考:vscode debug指导
- 其他配置项
Ctrl+Shift+P, 选择 C/C++: Edit Configurations (UI) ,有很多更为广泛的配置项目,不过一般不怎么用到。具体可以参考。
其他c++配置项设置
结束
全过程是非常简单,安装vscode,按装MSYS2,安装gcc, 配置一气呵成,亲测半小时即可搞定~