☰
Trae 与 VSCode 生成代码后 exe 文件自动删除:Code Runner executorMap 配置实战
2026/9/29 23:30:14 网站建设 项目流程

1. 为什么你的项目目录总被 exe 文件塞满

如果你用 Trae 或 VSCode 写 C/C++,大概率遇到过这个场景:随手写个test.cpp验证一个算法,点一下 Code Runner 的运行按钮,目录里立刻多出一个test.exe。写十个测试文件,就多十个 exe。时间一长,项目根目录、src目录、甚至桌面都被这些编译产物占满,找源文件反而要翻半天。

这个问题的根源在于 Code Runner 的默认执行逻辑:它只负责「编译 + 运行」,不负责「清理」。g++ $fileName -o $fileNameWithoutExt.exe生成可执行文件,然后执行它,执行完就结束了,exe 留在原地。对 C/C++ 开发者来说,这属于典型的「编译残留」痛点,尤其是做算法题、写课程作业、临时验证代码片段的时候,源文件本身可能只有几十行,生成的 exe 却有好几 MB。

解决思路其实很直接:在 Code Runner 的executorMap里,把「编译 → 运行 → 删除」串成一条命令链。Windows 下用del,类 Unix 环境用rm,中间用&&连接,保证只有前一步成功才执行下一步。这样每次运行完,exe 自动消失,目录始终干净。

这篇内容面向正在用 Trae 或 VSCode 写 C/C++ 的开发者,给出可直接复制的settings.json配置骨架,演示运行后自动删除 exe 的验证动作,并说明如何通过 TaoToken 统一管理相关 AI 工具的 Key 与 API 通道,让配置这件事一次搞定、多工具复用。

2. TaoToken 前置:统一 Key 与 API 通道

在动手改executorMap之前,先说一个容易被忽略的前置问题:当你在 Trae、VSCode 里同时装了多个 AI 编程插件(代码补全、对话、Agent 各一个),每个插件都要单独填 API Key、单独配 Base URL,改一次配置要翻好几个设置页。TaoToken 的价值就在这里——它提供统一的 Key 与 API 通道,把模型对话、编码补全、Agent 调用收敛到一套凭证上。

TaoToken 的官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api (这个不加 UTM)。你可以在控制台里创建 Key,然后把它填到各个 AI 工具的配置里。对于本篇要讲的 Code Runner 场景,TaoToken 本身不直接参与 exe 删除,但它负责的是「你写代码时用的 AI 助手」这一层——比如你在 Trae 里让 AI 帮你生成executorMap配置,或者在 VSCode 里用对话插件排查编译报错,这些请求都走同一套通道。

具体操作上,先到控制台创建 API Key:

  • 控制台入口:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
  • API Keys 管理:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=

创建好 Key 之后,如果你用的是 Claude Code 这类编码 Agent,可以参考接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。ClaudeCodeAnthropic 的配置入口在 https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。如果你更习惯在网页里直接和模型对话来生成配置片段,可以用模型对话入口:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。长期做编码和 Agent 任务的话,Coding Plan 入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。

注意:TaoToken 是统一的 Key/API 通道管理工具,不替代编辑器本身,也不参与本地编译流程。它的作用是让你在多个 AI 工具之间复用同一套凭证,减少重复配置。

3. 可复制配置:settings.json 中的 executorMap 骨架

现在进入正题。Code Runner 的executorMap决定了每种语言用什么命令执行。我们要做的,是在 C 和 C++ 的命令链末尾加上删除 exe 的动作。

3.1 打开 settings.json 的正确姿势

在 VSCode 里,按Ctrl + ,打开设置,搜索code-runner.executorMap,点击「在 settings.json 中编辑」。在 Trae 里路径类似,设置面板里搜同一个关键词,同样进入settings.json。不要直接在图形界面里改,因为executorMap是对象类型,图形界面编辑起来很别扭。

3.2 Windows 下的配置骨架

下面这份配置可以直接复制,注意-fexec-charset=GBK是为了让中文输出不乱码,-mconsole在 Trae 场景下保证控制台窗口正常弹出:

{ "code-runner.executorMap": { "c": "cd $dir && gcc -fexec-charset=GBK -mconsole $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe && del $fileNameWithoutExt.exe", "cpp": "cd $dir && g++ -fexec-charset=GBK -mconsole $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe && del $fileNameWithoutExt.exe" } }

如果你在 VSCode 里不需要-mconsole,可以去掉这个参数,命令会更短:

{ "code-runner.executorMap": { "c": "cd $dir && gcc -fexec-charset=GBK $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe && del $fileNameWithoutExt.exe", "cpp": "cd $dir && g++ -fexec-charset=GBK $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe && del $fileNameWithoutExt.exe" } }

3.3 命令链拆解

以 C++ 那条为例,拆开看每一步:

片段作用
cd $dir切换到当前源文件所在目录
g++ -fexec-charset=GBK -mconsole $fileName -o $fileNameWithoutExt.exe编译,输出 exe
$dir$fileNameWithoutExt.exe运行刚生成的 exe
del $fileNameWithoutExt.exe运行结束后删除 exe

&&的含义是「前一条命令返回成功才执行下一条」。这意味着如果编译失败,不会去运行一个不存在的 exe,也不会误删;如果运行过程中程序崩溃返回非零,删除动作不会执行,方便你保留现场排查。这一点比用;连接更安全。

3.4 类 Unix 环境的写法

如果你在 macOS 或 Linux 下用 Trae/VSCode,把del换成rm,exe 后缀通常也不需要:

{ "code-runner.executorMap": { "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt && rm $fileNameWithoutExt", "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt && rm $fileNameWithoutExt" } }

3.5 保留 exe 的例外情况

有时候你确实想保留 exe,比如要发给别人测试。这时候不要改全局配置,而是临时用终端手动编译一次,或者给 Code Runner 加一个自定义命令。全局配置保持「自动删除」,特殊需求走手动,这样目录长期是干净的。

4. 验证请求与成功结果

配置写完,必须验证。下面用一个最小 C++ 程序走一遍完整流程。

4.1 准备测试文件

新建hello_clean.cpp:

#include <iostream> using namespace std; int main() { cout << "exe will be deleted after run" << endl; return 0; }

4.2 运行前检查目录

在终端里进入该文件所在目录,执行:

dir *.exe

Windows 下如果目录里没有 exe,会提示「找不到文件」。记下当前状态。

4.3 用 Code Runner 运行

在编辑器里右键选择「Run Code」,或者按快捷键Ctrl + Alt + N。输出窗口应该显示:

exe will be deleted after run

4.4 运行后再次检查

回到终端,再执行一次:

dir *.exe

如果配置生效,此时目录里依然没有hello_clean.exe。这就是成功结果:程序运行了,输出正常,exe 被自动清理。

4.5 验证删除动作确实执行了

想更直观地确认,可以把命令链里的del临时改成del加一个回显,或者先手动编译一个 exe 放在目录里,再运行 Code Runner,观察那个同名 exe 是否被删掉。更稳妥的做法是看 Code Runner 的输出面板,命令链会完整打印出来,你能看到del $fileNameWithoutExt.exe这一段确实在末尾。

提示:如果运行后 exe 还在,先检查settings.json是否有语法错误(比如多余的逗号),再检查是否保存了文件。Code Runner 读取的是保存后的配置。

5. 本篇常见错排查

配置过程中容易踩的坑集中在几个地方,逐个说清楚。

5.1 exe 没被删除,命令链断在中间

最常见的原因是编译或运行返回了非零状态,导致&&后面的del没执行。比如程序里return 1;,或者抛了未捕获异常。这时候 exe 会保留,属于预期行为。解决办法是先把程序改到正常返回 0,确认删除逻辑通了,再处理业务逻辑。

5.2 中文输出乱码

-fexec-charset=GBK是 Windows 下的常见解法。如果你的源文件本身是 UTF-8 保存的,可能需要改成-fexec-charset=UTF-8,或者用chcp 65001配合。这个和 exe 删除无关,但会影响你判断「程序是否真的运行成功」。

5.3 Trae 里配置不生效

Trae 的设置层级和 VSCode 略有差异。确认你改的是用户级settings.json而不是工作区级,或者反过来。如果工作区里有.vscode/settings.json,它会覆盖用户级配置。检查一下项目根目录有没有这个文件。

5.4 路径里有空格导致 cd 失败

cd $dir在路径含空格时可能出问题。如果项目路径有空格,把命令改成cd "$dir",给变量加引号。这是 Windows 批处理命令的通用注意事项。

5.5 删除的是错误文件

$fileNameWithoutExt.exe依赖 Code Runner 的变量替换。如果你手动改了变量名,或者文件名里有多个点(比如a.b.cpp),$fileNameWithoutExt的取值可能和你预期不同。建议源文件名保持简单,避免多个点号。

5.6 想同时保留调试信息

如果你用-g编译并打算用 gdb 调试,自动删除 exe 会让调试变得麻烦。这种场景建议单独建一个调试任务(launch.json),不要走 Code Runner 的自动删除链路。两套流程分开,各管各的。

5.7 配置写错导致 Code Runner 完全不工作

executorMap是 JSON 对象,少一个引号、多一个逗号都会让整个配置失效。改完先用编辑器的 JSON 校验功能看一眼,或者把配置贴到模型对话里让 AI 帮你检查语法。这也是前面提到统一 Key 通道的实用场景之一——排查配置语法时,直接问模型比翻文档快。

6. 把配置和 Key 管理一次做对

executorMap这套配置本身不复杂,核心就是「编译 → 运行 → 删除」用&&串起来,Windows 用del,类 Unix 用rm。真正花时间的往往是周边:多个 AI 工具各配一套 Key、配置语法出错要逐个排查、换台机器又要重来一遍。

我的做法是把 Key 和 API 通道收敛到 TaoToken 上,编辑器里的 AI 插件、编码 Agent、网页对话都指向同一套凭证。这样换机器时,只需要在 TaoToken 控制台确认 Key 有效,然后在新环境的插件里填一次 Base URL 和 Key 就行,不用回忆每个插件当初是怎么配的。接入文档和 API Keys 页面建议收藏,排障时直接对照。

至于 exe 自动删除,配置一次就长期有效。建议你现在就打开settings.json,把第 3 节的骨架贴进去,跑一遍第 4 节的验证流程。确认目录干净之后,这套配置就可以跟着你的开发环境一直用下去。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询