关于VS和Clion破电脑带不动,所以用VScode配置环境

这个记录一下吧,防止以后换电脑不知道咋配了

这是微软官方的教程,不过写的也太草率了点

https://code.visualstudio.com/docs/languages/cpp

下载VScode插件

把这个包装进去,当然你也可以装第一个的Code runner

image-20260715142356607

下载MinGW64

点击前往下载

image-20260715141839349

双击启动然后指定MinGW64的安装路径之后无脑下一步

然后安装完成弹出来一个小黑框

image-20260715142121370

输入代码并回车来安装工具链(最好挂梯子,防止下载失败)

1
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

然后先回车默认安装所有的东西

image-20260715142526585

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

image-20260715142630365

然后稍等片刻就下载完了

然后把ucrt64加入到系统path路径

image-20260715142934778

image-20260715143144886

先找到ucrt64bin文件位置

image-20260715143336454

image-20260715143405980

然后添加到Path

image-20260715143219488

然后输入这几个命令检测一下

东西 作用
gcc C编译器
g++ C++编译器
gdb 调试器
1
2
3
gcc --version   
g++ --version
gdb --version

image-20260715172036878

①Coderunner插件下的使用方式(最简单)

我们测试一下C语言,可以

image-20260715144625919

C++也可以

image-20260715145013103

对了,说起来,好像在liunx里是自带gcc g++这些东西,直接使用gcc 文件名.c -o 文件名 g++ 文件名.cpp -o 文件名这种就可以编译运行c和c++程序

不过这个是单个文件的,我们要实现运行整个项目的文件需要这样改

首先打开这个配置文件Setting.json,找到这里

image-20260715154440256

将其分别改为(即$fileName 改成*.c *.cpp 然后$dir$fileNameWithoutExt 改成.\\ $fileNameWithoutExt.exe)

因为原版是对单个文件编译运行的,这里改成多个关联文件运行

1
2
3
4
5
6
//原版本
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
//修改后
"c": "cd $dir && gcc *.c -o $fileNameWithoutExt && .\\$fileNameWithoutExt.exe"
//固定名字版本(推荐)
"c": "cd $dir && gcc *.c -o program.exe && .\\program.exe"
1
2
3
4
5
6
//原版本
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
//修改后
"cpp": "cd $dir && g++ *.cpp -o $fileNameWithoutExt && .\\$fileNameWithoutExt.exe"
//固定名字版本(推荐)
"cpp": "cd $dir && g++ *.cpp -o program.exe && .\\program.exe"

我们分别测试一下

C++多文件程序

image-20260715160441538

C语言多文件程序

image-20260715160717229

接下来我要说的就是这个插件的缺点

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

image-20260715160923840

解决办法就是把$fileNameWithoutExt.exe改成一个具体的名字例如program.exe,这样就不会有这种问题了

最大的缺点就是我们对项目参与的脚本是否全部有用无从得知,一旦混进去无用脚本很难找出来

② C/C++ Extension Pack(常用)

注意,下载这个插件包之后千万千万千万不要再下载这个clangd插件,因为会和微软的产生冲突,导致右上角的三角形调试按钮消失(浪费一个下午才找出来原因,我还以为是VScode坏了,气死我了,为什么我一开始没想到是插件冲突的问题,真是的),不过clangd确实在智能补全上比微软的要好,不过目前我们先用微软的,这两个是二者不可得兼的

image-20260715201713388

其他大佬的配置方法例如CSDN上的知乎上的 方法是task.json文件+ launch.json什么的

原理和Coderunner差不多,这里我还是实践一下吧

1
输入C/C++,选择“Edit Configurations(UI)”

可以打开配置面板

image-20260715202407927

当然也可以从这里打开

image-20260715202540154

image-20260715202633737

然后我们设置为gcc.exe (C语言编译器)或者g++.exe(C++编译器)

下面的Windows-gcc-64不要改保持默认

image-20260715202900519

然后设置完毕可以看到在.vscode文件夹多了一个c_cpp_properties.json文件

可以看到我们当前使用的是C语言编译器gcc.exe

image-20260715203207561

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

image-20260715203500207

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

image-20260715203849865

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

image-20260715204658635

对了这里提一嘴

我们在visual studio里的C项目使用scanf的时候需要在这里加一句,不然会报错,详细过程参考大佬文章

步骤:项目 -> 属性 -> C/C++ -> 预处理器 -> 预处理定义 -> 编辑 -> 加“_CRT_SECURE_NO_WARNINGS 1”

而在Dev C++小熊猫C++这种轻量C/C++编译器里分别需要在编译的时候加上这一句,这样控制台输出的中文就不会是乱码了

1
2
-finput-charset=UTF-8 -fexec-charset=GBK      //小熊猫C++
-finput-charset=UTF-8 -fexec-charset=UTF-8 //Dev C++

image-20260715205411441

OK回归正题

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

如图

image-20260715210926072

我们先将其改为这样试试看

1
2
3
4
5
6
7
8
9
"args": [
"-fdiagnostics-color=always",
"-g",
// "${file}",
"*.c",
"-o",
// "${fileDirname}\\${fileBasenameNoExtension}.exe"
"${fileDirname}\\program.exe"
],

image-20260715211236631

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

image-20260715211449502

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

image-20260715211727757

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

image-20260715211848215

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

image-20260715212158612

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

比如我的是在这里

1
"program": "${fileDirname}\\program.exe",

image-20260715212456077

image-20260715212632109

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

image-20260715213536396

原因是我们task.json之前用的这个*.c ,VScode官方提到过多文件通配符需要显式列文件或者使用构建系统,也就是*.c 或者* .cpp在这个新版本插件里不适用(旧版可能适用)

所以我们还是一个一个的把文件添加上去吧,然后把cwd修改成”cwd”: “${fileDirname}” 即当前工作目录 = 当前打开文件所在目录

1
2
3
4
"options": {
// "cwd": "D:/MinGW-W64/ucrt64/bin"
"cwd": "${fileDirname}"
},

image-20260715221618221

ok,调试成功

image-20260715221748037

想必你也发现了—–我们光配置这个环境就浪费了这么多时间,而且可复用性低,而且难以管理文件,每次新开一个项目还都需要我们手动修改配置文件

所以我们接下来要讲的方法是Cmake + clang

③ CMake Tools (推荐)

对了,你肯定会注意到CMake Tools下方的CMake插件的存在,emmm,这个是因为以前CMake Tools以前是依赖这个东西的语言服务的,而现在更新了不需要了,可下可不下

我们之前提到的的那个 clangd插件,这里是需要的,这里我们不再依赖gcc,而是使用clang,clang的编译速度大于gcc,而且报错的时候的提示更现代

image-20260715232923663

我们先在vscode的设置文件settings.json里把微软的这个智能补全由“default”设置为“disabled”,如果有一天你想要换回方案二就将其设置为default然后禁用 clangd插件

既然你决定使用Clangd插件,那么我们一不做二不休,把Clang也下载了,clang和gcc一样可以运行c或者c++程序

点击前往下载Clang 我们下载后把llvm的bin文件夹添加到系统path路径

image-20260715223221230

这个就是VScode官方推荐的方式,CMake 不是编译器,而是构建系统生成器,任何大型cpp和c项目离不开Cmake

比如我们熟悉的flutter也是用Cmake构建和打包项目的

image-20260717124054554

我们先下载cmake 点击前往下载 提一嘴,cmake最新版本支持安卓了!

下载完记得把bin文件配置到path路径

image-20260715224958113

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

image-20260715224832563

然后我们去下载Ninja 点击前往下载

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

OK我们验证一下

image-20260716001503449

很好,接下来要开始了

先按Ctrl + Shift + P 输入CMake: Quick Start并选择

image-20260716002115469

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

image-20260716002811629

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

image-20260716003103522

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

image-20260716003230762

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

image-20260716003307680

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

image-20260716004325768

然后我们 Ctrl + Shift + P 指定工具包

1
CMake: Select Kit

image-20260716004841592

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

image-20260716004942050

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

image-20260716005145524

然后我们开始build,build有两种方式,第一种就是

1
Cmake: Build 

image-20260716005510515

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

image-20260716005638597

然后得到

image-20260716005712878

最后我们终于可以运行项目了!

使用快捷键 ctrl + shift +F5 运行项目得到

1
CMake: Run Without Debugging

image-20260716005814656

image-20260716010130413

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

image-20260716010315618

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

image-20260716011004394

这个可以让AI给你写几个

然后由于cmakelists发生了变动我们需要重新构建

1
2
CMake: Configure
CMake: Build 或者 点击vscode下方的齿轮

然后Ctrl + shift +F5或者点击VScode下方的小虫子旁边的小三角运行,调试就是小虫子

image-20260716013803992

成功得到结果

image-20260716011045416

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# 指定 CMake 最低版本要求
# 意思:
# 如果用户电脑上的 CMake 版本低于 3.10,则停止配置
cmake_minimum_required(VERSION 3.10.0)


# 定义项目
#
# 参数:
# VScodeScriptTest -> 项目名称
# VERSION 0.1.0 -> 项目版本
# LANGUAGES C CXX -> 项目使用的语言
#
# C = C语言
# CXX = C++
#
# 如果不写 LANGUAGES,默认会启用 C 和 C++
project(
VScodeScriptTest
VERSION 0.1.0
LANGUAGES C CXX
)


# 创建一个可执行程序
#
# 参数:
#
# 第一个参数:
# VScodeScriptTest
#
# 是生成的目标(target)名字
#
# 后面的:
# main.cpp
# Player.cpp
# Enemy.cpp
#
# 是参与编译的源文件
#
# 最终生成:
#
# Windows:
# VScodeScriptTest.exe
#
add_executable(
VScodeScriptTest

main.cpp

Player.cpp
Enemy.cpp
)


# 引入CTest模块
#
# CTest是CMake自带的测试系统
#
# 作用:
# 管理单元测试
#
include(CTest)


# 开启测试功能
#
# 开启后:
#
# 可以使用:
# ctest
#
# 来执行测试
enable_testing()



# 设置CPack打包项目名称
#
# ${PROJECT_NAME}
#
# 是变量
#
# 它的值就是:
# VScodeScriptTest
#
set(
CPACK_PROJECT_NAME
${PROJECT_NAME}
)



# 设置打包版本
#
# ${PROJECT_VERSION}
#
# 来自:
#
# project(
# VERSION 0.1.0
# )
#
set(
CPACK_PROJECT_VERSION
${PROJECT_VERSION}
)



# 引入CPack
#
# CPack负责生成安装包
#
# 例如:
#
# Windows:
# .exe安装程序
#
# Linux:
# .deb
#
# macOS:
# .dmg
#
include(CPack)

最后

看到这里,恭喜你,你已经完成了最艰难的第一步—–环境配置

接下来只需要学习C++以及CmakeLists.txt怎么用就行了(这才是真正的地狱………滑稽滑稽滑稽)

C++我最近看到一个很好看的GUI库,也是基于Cmake的,感兴趣的话你可以去了解一下,不过其实还有更成熟的库比如imgui这种

点击前往下载

image-20260716150447736