更好的 VS Code + C++ 编程体验:分离源文件和可执行文件
使用 run code 插件并将源文件(.cpp)和可执行文件(.exe)分离保存
前言
本文前提:已完成编译链的配置,即已安装 MSCV (mingw64)的安装和环境变量配置


在编程的时候,直接使用 gcc(g++)的编译命令生成构建可执行文件的时候,.exe 文件会直接生成在 .cpp 文件的同级文件夹。一旦程序变多,就会变得很不美观且不方便管理和选中。
本文基于 run code 插件(VS Code),讲解了如何配置 run code 来把 .exe 的生成文件单独放到一个文件夹。
一、安装插件
在插件市场中安装插件 Code Runner

安装后按照指示重启 IDE (VS Code),可以激活插件。
二、进入插件设置界面
进入插件的设置界面

寻找设置选项 Code Runner: Executor Map ,点击 在 settings.json 中编辑 快捷方式进入设置界面。

三、在插件设置窗口进行配置
这个文件(功能)它的作用是让你自定义不同编程语言在 Code Runner 插件中的一键运行命令。我们需要对 C 和 C++ 的构建命令进行自定义,来实现创建文件夹和分文件夹构建功能。
寻找到 c 和 cpp 的构建指令部分(如下图所示):

"c": "gcc $fileName -o $fileNameWithoutExt && $fileNameWithoutExt",
"zig": "zig run",
"cpp": "g++ $fileName -o $fileNameWithoutExt && $fileNameWithoutExt",
这部分可能有些许出入,不过大概就是长这样。需要寻找到 c 和 cpp 的指令即可。可以关注 ‘gcc’ ‘g++’ ‘-o’ 这样的部分/
其中,中间夹了一个 zig ,我们可以不用管,就放在那里不动就行。
将上述内容修改为:
"c": "cd $dir && if (-not (Test-Path build)) { New-Item -ItemType Directory -Path build | Out-Null } && gcc $fileName -o .\\build\\$fileNameWithoutExt && .\\build\\$fileNameWithoutExt",
"zig": "zig run",
"cpp": "cd $dir && if (-not (Test-Path build)) { New-Item -ItemType Directory -Path build | Out-Null } && g++ $fileName -o .\\build\\$fileNameWithoutExt && .\\build\\$fileNameWithoutExt",
这行代码是最终在命令行 (Powershell) 中实际运行的指令。因此可以书写任何兼容 Powershell 的指令。
这里的 cd $dir && if (-not (Test-Path build)) { New-Item -ItemType Directory -Path build | Out-Null } 代码的作用是,先进入当前文件所在的目录,然后检查是否存在名为 build 的文件夹,如果不存在就自动创建一个。
通过修改编译参数 -o .\\build\\$fileNameWithoutExt && .\\build\\$fileNameWithoutExt" ,我们修改了编译命令的目标文件夹和运行命令的目标文件夹到同一目录下的 /build 文件夹。这里可以按照自己的喜好进行自定义,如 .\\Asumi\\ 等。
这里命令中添加两个反斜杠的原因是,这句命令被引号 "" 包裹,所以是字符串,而字符串中的反斜杠需要用反斜杠进行转义(Escape),以便系统能正确识别出它是一个单纯的路径分隔符,而不是具有特殊含义的控制字符。(这部分在C++课上会上,我看看谁没认真听讲)
做完这些操作后,请记得 Ctrl + S 保存文件,否则不生效。
四、小结和其他
⭐ 通过以上配置,我们便成功实现了 Code Runner 的分文件夹自动构建与整理。这样修改带来的核心好处有两个:
- 保持工作区整洁:所有的 .exe 可执行文件都会被统一收纳进 build 文件夹中,再也不会和你的 .c 或 .cpp 源代码文件混在一起,让项目目录一目了然。
- 避免 Git 污染:如果你使用 Git 进行版本控制,现在只需在项目根目录下新建一个 .gitignore 文件并写上 build/,就能一键忽略所有编译产物,避免无意义的二进制文件提交。
Q: 为什么修改完 settings.json 文件后有红色波浪线?
A: JSON 是一种对格式要求极度严苛的配置文件。请检查:
- 逗号缺失、
/多余:每一行配置的末尾都需要有一个英文逗号,。但请注意,如果是最后一行配置,其末尾绝对不能加逗号,否则会直接导致整个配置文件解析失败。 - 符号中英文:请确保所有引号
"、逗号,、括号()均为英文半角符号。
现在文件夹干净了没有无用的 exe文件了,又可以愉快的玩耍了
你通常怎么处理本地 C/C++ 编译产生的 .exe 可执行文件?
📝 知识小测验
0/3在作者修改的 Code Runner 配置中,`if (-not (Test-Path build))` 这一段代码的核心作用是什么?