关于VS和Clion破电脑带不动,所以用VScode配置环境
这个记录一下吧,防止以后换电脑不知道咋配了
这是微软官方的教程,不过写的也太草率了点
https://code.visualstudio.com/docs/languages/cpp
下载VScode插件
把这个包装进去,当然你也可以装第一个的Code runner

下载MinGW64

双击启动然后指定MinGW64的安装路径之后无脑下一步
然后安装完成弹出来一个小黑框

输入代码并回车来安装工具链(最好挂梯子,防止下载失败)
1 | pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain |
然后先回车默认安装所有的东西

然后当提醒是否继续时回车或者输入 y

然后稍等片刻就下载完了
然后把ucrt64加入到系统path路径


先找到ucrt64的bin文件位置


然后添加到Path

然后输入这几个命令检测一下
| 东西 | 作用 |
|---|---|
| gcc | C编译器 |
| g++ | C++编译器 |
| gdb | 调试器 |
1 | gcc --version |

①Coderunner插件下的使用方式(最简单)
我们测试一下C语言,可以

C++也可以

对了,说起来,好像在liunx里是自带gcc g++这些东西,直接使用
gcc 文件名.c -o 文件名g++ 文件名.cpp -o 文件名这种就可以编译运行c和c++程序
不过这个是单个文件的,我们要实现运行整个项目的文件需要这样改
首先打开这个配置文件Setting.json,找到这里

将其分别改为(即$fileName 改成*.c 或*.cpp 然后$dir$fileNameWithoutExt 改成.\\ $fileNameWithoutExt.exe)
因为原版是对单个文件编译运行的,这里改成多个关联文件运行
1 | //原版本 |
1 | //原版本 |
我们分别测试一下
C++多文件程序

C语言多文件程序

接下来我要说的就是这个插件的缺点
我们刚才配置的是“.\$fileNameWithoutExt.exe”意思是根据当前文件名配置exe,但是就会导致在不同的文件上运行时,诞生出来了不同名字的exe,尽管结果一样

解决办法就是把$fileNameWithoutExt.exe改成一个具体的名字例如program.exe,这样就不会有这种问题了
最大的缺点就是我们对项目参与的脚本是否全部有用无从得知,一旦混进去无用脚本很难找出来
② C/C++ Extension Pack(常用)
注意,下载这个插件包之后千万千万千万不要再下载这个clangd插件,因为会和微软的产生冲突,导致右上角的三角形调试按钮消失(浪费一个下午才找出来原因,我还以为是VScode坏了,气死我了,为什么我一开始没想到是插件冲突的问题,真是的),不过clangd确实在智能补全上比微软的要好,不过目前我们先用微软的,这两个是二者不可得兼的

其他大佬的配置方法例如CSDN上的 和 知乎上的 方法是task.json文件+ launch.json什么的
原理和Coderunner差不多,这里我还是实践一下吧
1 | 输入C/C++,选择“Edit Configurations(UI)” |
可以打开配置面板

当然也可以从这里打开


然后我们设置为gcc.exe (C语言编译器)或者g++.exe(C++编译器)
下面的Windows-gcc-64不要改保持默认

然后设置完毕可以看到在.vscode文件夹多了一个c_cpp_properties.json文件
可以看到我们当前使用的是C语言编译器gcc.exe

此时我们就可以点击这个编译运行了

我们重新创建一个新的C语言文件,然后点击调试运行后,在.vscode文件夹中出现了tasks.json文件以及exe文件

我们试一下scanf输入输出有没有问题

对了这里提一嘴
我们在visual studio里的C项目使用scanf的时候需要在这里加一句,不然会报错,详细过程参考大佬文章
步骤:项目 -> 属性 -> C/C++ -> 预处理器 -> 预处理定义 -> 编辑 -> 加“_CRT_SECURE_NO_WARNINGS 1”
而在Dev C++和小熊猫C++这种轻量C/C++编译器里分别需要在编译的时候加上这一句,这样控制台输出的中文就不会是乱码了
1 | -finput-charset=UTF-8 -fexec-charset=GBK //小熊猫C++ |

OK回归正题
当然这只是单个文件的,我们如果要多个文件运行的话需要对tasks.json做一些调整
如图

我们先将其改为这样试试看
1 | "args": [ |

然后保存后,我们创建launch.json文件,使用gdb调试

ok,我们获得了这个launch.json文件,此时我们需要添加配置

选择这个C/C++: (gdb) 启动

然后我们需要修改的只有两个地方

第一个是项目名称,我们和之前的${fileDirname}\\program.exe保持一致,第二个是gdb调试器的路径,这个我们需要改为我们实际的路径
比如我的是在这里
1 | "program": "${fileDirname}\\program.exe", |


很好,接下来我们验证一下,使用多文件项目测试,但是出现了这个问题

原因是我们task.json之前用的这个*.c ,VScode官方提到过多文件通配符需要显式列文件或者使用构建系统,也就是*.c 或者* .cpp在这个新版本插件里不适用(旧版可能适用)
所以我们还是一个一个的把文件添加上去吧,然后把cwd修改成”cwd”: “${fileDirname}” 即当前工作目录 = 当前打开文件所在目录
1 | "options": { |

ok,调试成功

想必你也发现了—–我们光配置这个环境就浪费了这么多时间,而且可复用性低,而且难以管理文件,每次新开一个项目还都需要我们手动修改配置文件
所以我们接下来要讲的方法是Cmake + clang
③ CMake Tools (推荐)
对了,你肯定会注意到CMake Tools下方的CMake插件的存在,emmm,这个是因为以前CMake Tools以前是依赖这个东西的语言服务的,而现在更新了不需要了,可下可不下
我们之前提到的的那个 clangd插件,这里是需要的,这里我们不再依赖gcc,而是使用clang,clang的编译速度大于gcc,而且报错的时候的提示更现代

我们先在vscode的设置文件settings.json里把微软的这个智能补全由“default”设置为“disabled”,如果有一天你想要换回方案二就将其设置为default然后禁用 clangd插件
既然你决定使用Clangd插件,那么我们一不做二不休,把Clang也下载了,clang和gcc一样可以运行c或者c++程序
点击前往下载Clang 我们下载后把llvm的bin文件夹添加到系统path路径

这个就是VScode官方推荐的方式,CMake 不是编译器,而是构建系统生成器,任何大型cpp和c项目离不开Cmake
比如我们熟悉的flutter也是用Cmake构建和打包项目的

我们先下载cmake 点击前往下载 提一嘴,cmake最新版本支持安卓了!
下载完记得把bin文件配置到path路径

然后这个东西有GUI界面的(不知道什么用,你们可以研究一下)

然后我们去下载Ninja 点击前往下载
把这个ninja exe放到Cmake的bin文件夹就行了(主要是ninja只有一个exe,图方便,你们要是介意也可以放到其他地方然后把它的路径加到系统path里面去),ninja是一个现代的快速构造工具
OK我们验证一下

很好,接下来要开始了
先按Ctrl + Shift + P 输入CMake: Quick Start并选择

然后第一步给Cmake项目命名,这里你可以保持默认

然后选择项目的语言,我们就用C++吧

然后问创建可执行文件Executable还是创建库Library,这里我们创建可执行文件Executable,毕竟我们要试验一下能不能用

然后就是测试工具Ctest和打包工具Cpack,可选可不选,这里我先都勾选上

然后我们得到了这三个东西

然后我们 Ctrl + Shift + P 指定工具包
1 | CMake: Select Kit |

我们选择Clang 如果你安装了但是没有显示,可以先扫描一下退出重进就可以看到有了(虽然你也可以用gcc,但我不推荐,因为还要多配置)

然后选择之后就可以了,于是我们现代化标准的C++环境已经搭建完成

然后我们开始build,build有两种方式,第一种就是
1 | Cmake: Build |

第二种就是点击下方的这个齿轮bulid(生成)

然后得到

最后我们终于可以运行项目了!
使用快捷键 ctrl + shift +F5 运行项目得到
1 | CMake: Run Without Debugging |


如果我们要调试的话可以按shift + F5

这里我们测试多文件项目,把cpp文件添加到cmakelists的add_executable里面

这个可以让AI给你写几个
然后由于cmakelists发生了变动我们需要重新构建
1 | CMake: Configure |
然后Ctrl + shift +F5或者点击VScode下方的小虫子旁边的小三角运行,调试就是小虫子

成功得到结果

1 | # 指定 CMake 最低版本要求 |
最后
看到这里,恭喜你,你已经完成了最艰难的第一步—–环境配置
接下来只需要学习C++以及CmakeLists.txt怎么用就行了(这才是真正的地狱………滑稽滑稽滑稽)
C++我最近看到一个很好看的GUI库,也是基于Cmake的,感兴趣的话你可以去了解一下,不过其实还有更成熟的库比如imgui这种



评论区