1、前言2、准备工作3、vscode的一些常用插件
3.1 C++主要插件3.2 一些辅助插件 4、单文件工程示例5、多文件工程示例
5.1 工作空间结构5.2 CMakelists.txt5.3 代码文件5.4 运行结果 6、结语 1、前言
笔者刚入行时直接使用Qt进行C++软件开发,习惯了Qt浅色风格之后,尤其是虚函数斜体显示的主题。再转到VS,无论是VS的深色还是浅色主题,都让笔者感觉到强烈的不习惯。
而且,VS的安装有时候着实让人诟病,安装vs2017之前的还好,可以下载离线包。但vs2017之后,需要先下载Visual Studio Installer再下载安装必要组件,而国内有时候甚至经常出现Visual Studio Installer下载失败的情况。vs的确功能强大,堆栈分析、内存快照,甚至并行堆栈现在都是笔者常用的功能。然而,VS实在是太过臃肿太过庞大,下载耗时不说,安装内存直接起飞。
鉴于以上三点原因,笔者一直在苦苦寻找C++最轻量的集成开发环境。hw工作两个月,vscode的深度使用,让我看到了希望。本文将详细介绍如何使用vscode搭建 最轻量 的C++开发环境。
2、准备工作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-gitEnter 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调试器:3、vscode的一些常用插件 3.1 C++主要插件
pacman -S mingw-w64-x86_64-gdbMSYS2安装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++:
cmake插件:
注:CMakeTools插件,建议进行如下设置:
该设置的含义为,将CMake的构建目录设置为工作空间文件夹的上一级文件夹下,以工作空间名+_Build命名该工作空间的构建文件夹。
如果只是开发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。
3.2 一些辅助插件C++开发过程中,遇到一些特殊需求,比如自动生成类成员函数的定义,可以使用以下两个插件:
自动生成类成员函数的定义插件:
C/C++ Definition Autocompletion
该插件主要功能是根据头文件中的函数声明,通过按下.自动生成函数定义。
如下图所示:
还有一个自动生成所有成员函数的插件,但是忘了叫什么,下载次数比上面这个要多,但个人感觉不好用。后面想起来了再更新…
关于代码自动补全的插件,最近笔者发现了一款神奇的AI辅助插件,这里也推荐一下,看介绍是利用AI进行上下文识别,自动创建代码段候选。vscode插件商城中AI辅助写代码的插件有很多,但笔者个人觉得,可能还是以下插件要稍微好用一些:
AI 辅助插件 — Tabnine
笔者多嘴一句:AI辅助插件虽然神奇且强大,但由于其联网可能会更准确,在安全性方面,敬请读者朋友们谨慎使用。这也可能是笔者对AI外行的片面之词,因此请读者朋友们自行甄别。
另外,如果读者对当前的vscode的主题(图标主题、颜色主题等)不满足,vscode插件商城里有极其丰富的主题插件,总有一款会适合你。
4、单文件工程示例以上C++开发环境已经搭建完毕,下文将介绍如何进行真实工程开发。
假设工作空间如下图所示:
通过编写CMakelists.txt,可以进行单文件构建。
其中,CMakelists.txt的内容如下:
cmake_minimum_required(VERSION 3.20)project(SingleFileProjectExample)add_executable(${PROJECT_NAME} main.cpp)
main.cpp的内容如下:
#include
这里需要注意一点的是,CMakeTools插件在第一次打开工作空间添加CMakelists.txt文件时,不会自动触发CMakeConfiguration,当写完CMakelists.txt文件之后,用vscode重新打开工作空间,才会触发CMakeConfiguration。细节对比如下:
第一次打开空的工作空间,编辑器状态栏CMakeTools相关信息并未显示:
添加CMakelists.txt文件后,重新打开工作空间,CMakeTools插件触发CMakeConfiguration,信息如下:
选择gcc编译器之后,点击状态栏的调试按钮或者运行按钮,即可进行程序的调试或运行。如下图所示:
可以看到工程已成功运行。
多文件工程示例如下,只需要修改CMakelists.txt文件就行:
5.1 工作空间结构多文件工程示例结构如下:
这是按照一般第三方库的写法进行的,头文件放在include目录下,源文件放在source文件夹下,最外层放CMakelists.txt文件。
5.3 代码文件工程构建的CMakelists.txt文件内容如下:
source文件夹下CMakelists.txt文件内容如下:
MyMath.h5.4 运行结果
MyMath.cpp
main.cpp
运行结果如下:
6、结语vscode+MinGW搭建C++开发环境不难,而且整体加起来大小也只有1G左右,相比于vs动不动5~6G的庞大来说,这一套着实是算轻量了。
这一套所有的资源已经上传,需要的朋友可以前往下载:下载地址。
另外,打字不易,能不能点个赞再走???