笔者刚入行时直接使用Qt
进行C++
软件开发,习惯了Qt
浅色风格之后,尤其是虚函数斜体显示的主题。再转到VS,无论是VS的深色还是浅色主题,都让笔者感觉到强烈的不习惯。
而且,VS的安装有时候着实让人诟病,安装vs2017
之前的还好,可以下载离线包。但vs2017
之后,需要先下载Visual Studio Installer
再下载安装必要组件,而国内有时候甚至经常出现Visual Studio Installer
下载失败的情况。vs的确功能强大,堆栈分析
、内存快照
,甚至并行堆栈
现在都是笔者常用的功能。然而,VS实在是太过臃肿太过庞大,下载耗时不说,安装内存直接起飞。
鉴于以上三点原因,笔者一直在苦苦寻找C++最轻量的集成开发环境。hw工作两个月,vscode
的深度使用,让我看到了希望。本文将详细介绍如何使用vscode
搭建 最轻量 的C++开发环境。
vscode
功能太强大了,因为其强大的扩展性,因此功能上十分完备。它虽然是个编辑器,但得益于其丰富的插件以及活跃的插件社区,vscode
除了编译器和调试器之外,其余什么都不缺。
如何下载安装vscode自不用多说,百度vscode
进官网下载安装就行。但推荐在安装时,勾选将code添加进环境变量
。另外还有一个问题,vscode官网下载有时候会很慢,读者可以自行百度vscode国内下载慢
关键字进行解决。似乎是要修改下载链接的某部分前缀。
因此,为解决编译器和调试器,现行C++编译器,主流的就那么几种:
- msvc:微软的编译器,也是vs自带的编译器。
- gcc:linux上最常用的编译器。
- clang:编译器新秀,因为采用现代化设计,因此其某些方面的表现异常优秀。
msvc
自然不用多说,如何从vs中剥离出msvc笔者还没有尝试过,但既然决定搭建最轻量的C++开发环境,那就不用msvc吧。因此目光放到gcc
上,幸运的是,Windows上也有gcc
编译器,那就是大名鼎鼎的MinGW
。
MinGW
下载地址如下:MinGW-64下载地址。
如果直接下载原生的MinGW
,需要从sourceForge
上下载,但那个下载速度让人感动。因此下载MinGW
,推荐使用MSYS2
。
MSYS2
是一个Windows上集成clang、gcc的类linux环境,可以通过pacman
命令下载MinGW
以及对应的一些常用的第三方库,使用起来十分方便。而且MSYS2
国内下载很快,也可以切换国内源进行库下载。因此笔者推荐使用MSYS2下载安装MinGW
。后期如果要切换到clang
,MSYS2
也能满足。
MSYS2下载安装好了之后,其目录结构大致如下:
目录中,mingw64.exe
是启动mingw终端的exe,进入MSYS2终端之后,可以通过输入以下命令进行MinGW-gcc的安装:
pacman -S mingw-w64-x86_64-toolchain
输入上述命令之后,可以看到如下输出:
$ pacman -S mingw-w64-x86_64-toolchain
:: There are 19 members in group mingw-w64-x86_64-toolchain:
:: Repository mingw64
1) mingw-w64-x86_64-binutils 2) mingw-w64-x86_64-crt-git
3) mingw-w64-x86_64-gcc 4) mingw-w64-x86_64-gcc-ada
5) mingw-w64-x86_64-gcc-fortran 6) mingw-w64-x86_64-gcc-libgfortran
7) mingw-w64-x86_64-gcc-libs 8) mingw-w64-x86_64-gcc-objc
9) mingw-w64-x86_64-gdb 10) mingw-w64-x86_64-gdb-multiarch
11) mingw-w64-x86_64-headers-git 12) mingw-w64-x86_64-libgccjit
13) mingw-w64-x86_64-libmangle-git 14) mingw-w64-x86_64-libwinpthread-git
15) mingw-w64-x86_64-make 16) mingw-w64-x86_64-pkgconf
17) mingw-w64-x86_64-tools-git 18) mingw-w64-x86_64-winpthreads-git
19) mingw-w64-x86_64-winstorecompat-git
Enter a selection (default=all):
输入Y
之后就会进行相关工具的安装,输出大致如下:
:: Proceed with installation? [Y/n] Y
(19/19) checking keys in keyring [#####################] 100%
(19/19) checking package integrity [#####################] 100%
(19/19) loading package files [#####################] 100%
(19/19) checking for file conflicts [#####################] 100%
(19/19) checking available disk space [#########################] 100%
:: Processing package changes...
( 1/19) reinstalling mingw-w64-x86_64-binutils [#########################] 100%
( 2/19) reinstalling mingw-w64-x86_64-headers-git [#########################] 100%
( 3/19) reinstalling mingw-w64-x86_64-crt-git [#########################] 100%
( 4/19) reinstalling mingw-w64-x86_64-libwinpth... [#########################] 100%
( 5/19) reinstalling mingw-w64-x86_64-gcc-libs [#########################] 100%
( 6/19) reinstalling mingw-w64-x86_64-winpthrea... [#########################] 100%
( 7/19) reinstalling mingw-w64-x86_64-gcc [#########################] 100%
( 8/19) reinstalling mingw-w64-x86_64-gcc-ada [#########################] 100%
( 9/19) reinstalling mingw-w64-x86_64-gcc-libgf... [#########################] 100%
(10/19) reinstalling mingw-w64-x86_64-gcc-fortran [#########################] 100%
(11/19) reinstalling mingw-w64-x86_64-gcc-objc [#########################] 100%
(12/19) reinstalling mingw-w64-x86_64-gdb [#########################] 100%
(13/19) reinstalling mingw-w64-x86_64-gdb-multiarch [#########################] 100%
(14/19) reinstalling mingw-w64-x86_64-libgccjit [#########################] 100%
(15/19) reinstalling mingw-w64-x86_64-libmangle-git [#########################] 100%
(16/19) reinstalling mingw-w64-x86_64-make [#########################] 100%
(17/19) reinstalling mingw-w64-x86_64-pkgconf [#########################] 100%
(18/19) reinstalling mingw-w64-x86_64-tools-git [#########################] 100%
(19/19) reinstalling mingw-w64-x86_64-winstorec... [#########################] 100%
至此,代码编辑器、编译器均已安装好,别忘记将上文中/MSYS2-path/mingw64/bin
目录添加进环境变量
。如果你还需要调试器等其他的工具,请接着往下看,否则可以直接跳到第三节。
- MSYS2安装gdb调试器:
pacman -S mingw-w64-x86_64-gdb
- MSYS2安装make、cmake
pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-cmake
安装make是必须的,但是make下载后并不是make.exe
,而是mingw-make.exe
。
安装cmake只是为了不用再去cmake官网下载,而cmake官网下载cmake安装文件很慢。
vscode下载安装结束之后,C++开发常用的插件如下:
如果只是开发C++,核心插件就是这三个。其中C/C++
插件是vscode对C/C++直接支持的插件,cmake
和cmake tools
插件是对cmake直接支持的插件。
如果不需要使用cmake进行工程构建,也可以不用下载cmake相关插件,但这样的话,需要手写workspaceFolder/.vscode/task.json
和workspaceFolder/.vscode/launch.json
这两个文件进行工程构建配置。由于这两个文件写起来比较麻烦,相关教程也较少,因此笔者推荐使用cmake进行工程构建。同时,对于多文件工程,cmake提供了更好了支持。
不过,比较麻烦的是,如果使用cmake进行工程构建,需要自己写CMakelists.txt
,需要了解cmake语法。不过,对于大部分C++程序而言,第三方库的使用必不可少,而现在主流的第三方库构建语言正是cmake。因此cmake是任何C++开发者绕不过去的。
鉴于此,笔者强烈推荐读者朋友们学一学cmake。
C++开发过程中,遇到一些特殊需求,比如自动生成类成员函数的定义,可以使用以下两个插件:
自动生成类成员函数的定义插件:
关于代码自动补全的插件,最近笔者发现了一款神奇的AI辅助插件,这里也推荐一下,看介绍是利用AI进行上下文识别,自动创建代码段候选。vscode插件商城中AI辅助写代码的插件有很多,但笔者个人觉得,可能还是以下插件要稍微好用一些:
AI 辅助插件 — Tabnine
笔者多嘴一句:AI辅助插件虽然神奇且强大,但由于其联网可能会更准确,在安全性方面,敬请读者朋友们谨慎使用。这也可能是笔者对AI外行的片面之词,因此请读者朋友们自行甄别。
另外,如果读者对当前的vscode的主题(图标主题、颜色主题等)不满足,vscode插件商城里有极其丰富的主题插件,总有一款会适合你。
以上C++开发环境已经搭建完毕,下文将介绍如何进行真实工程开发。
假设工作空间如下图所示:
其中,CMakelists.txt的内容如下:
cmake_minimum_required(VERSION 3.20)
project(SingleFileProjectExample)
add_executable(${PROJECT_NAME} main.cpp)
main.cpp的内容如下:
#include
int main()
{
std::cout << "Hello World." << std::endl;
return 0;
}
这里需要注意一点的是,CMakeTools
插件在第一次打开工作空间添加CMakelists.txt
文件时,不会自动触发CMakeConfiguration
,当写完CMakelists.txt
文件之后,用vscode重新打开工作空间,才会触发CMakeConfiguration
。细节对比如下:
选择gcc编译器之后,点击状态栏的调试按钮或者运行按钮,即可进行程序的调试或运行。如下图所示:
可以看到工程已成功运行。
多文件工程示例如下,只需要修改CMakelists.txt文件就行:
多文件工程示例结构如下:
这是按照一般第三方库的写法进行的,头文件放在include
目录下,源文件放在source
文件夹下,最外层放CMakelists.txt
文件。
运行结果如下:
vscode+MinGW搭建C++开发环境不难,而且整体加起来大小也只有1G左右,相比于vs动不动5~6G的庞大来说,这一套着实是算轻量了。
这一套所有的资源已经上传,需要的朋友可以前往下载:下载地址。
另外,打字不易,能不能点个赞再走???