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

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

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

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

下载VScode插件

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

​ image-20260715142356607

下载MinGW64

点击前往下载

​ image-20260715141839349

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

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

​ image-20260715142121370

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

已复制
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

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

​ image-20260715142526585

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

​ image-20260715142630365

然后稍等片刻就下载完了

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

​ image-20260715142934778

​ image-20260715143144886

先找到ucrt64的bin文件位置

​ image-20260715143336454

​ image-20260715143405980

然后添加到Path

​ image-20260715143219488

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

东西 作用
gcc C编译器
g++ C++编译器
gdb 调试器
已复制
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)

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

JSON已复制
//原版本
"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"
JSON已复制
//原版本
"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差不多,这里我还是实践一下吧

已复制
输入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++编译器里分别需要在编译的时候加上这一句,这样控制台输出的中文就不会是乱码了

C已复制
-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

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

JSON已复制
"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调试器的路径,这个我们需要改为我们实际的路径

比如我的是在这里

JSON已复制
"program": "${fileDirname}\\program.exe",

​ image-20260715212456077

​ image-20260715212632109

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

​ image-20260715213536396

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

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

JSON已复制
"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 指定工具包

已复制
CMake: Select Kit

​ image-20260716004841592

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

​ image-20260716004942050

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

​ image-20260716005145524

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

已复制
Cmake: Build 

​ image-20260716005510515

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

​ image-20260716005638597

然后得到

​ image-20260716005712878

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

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

已复制
CMake: Run Without Debugging

​ image-20260716005814656

​ image-20260716010130413

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

​ image-20260716010315618

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

​ image-20260716011004394

这个可以让AI给你写几个

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

已复制
CMake: Configure
CMake: Build   或者 点击vscode下方的齿轮

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

​ image-20260716013803992

成功得到结果

​ image-20260716011045416

CMAKE已复制
# 指定 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