问题描述
Vscode中每当我们点击运行或者编译一个C++程序的时候,其生成的exe文件总是默认存放到当前文件夹下。
长此以往,非常影响我们查找文件的效率还有观感。那么有没有一种方式可以将这些exe文件统一存放到某一个文件夹之下呢?
答案是,有!众多常见博客主要使用设置Code Runner的方法进行改进:但一则是需要额外下载插件并且进行设置,难以将其随着项目迁移;二是未来修改时未必记得Code Runner的设置方式和途径,带来不便。
本文主要使用设置 .vscode/launch.json和.vscode/settings.json两个文件来实现同样效果的操作,同时保障可迁移性和直观性。
问题解决
设置tasks.json进行构建
该文件用于定义和配置任务。任务可以是任何外部工具,如编译器、构建脚本、或者是运行测试套件的命令,在这里我们设置build任务。
格外关注其中args中-o的指定路径中我们添加了 \\output 的字段。意思是将exe生成到原有目录的output文件夹下。
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build active file",
"command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\output\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
设置launch.json进行调试
该文件定义了调试器如何启动你的应用程序,注意由于build时将exe生成到了output目录下,所以这里的program和cwd中我们都添加了 \\output 的字段。
{
"configurations": [
{
"name": "C/C++: g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}\\output",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe build active file"
}
],
"version": "2.0.0"
}
文件放置和运行
将两个文件放置到项目的.vscode中,项目结构如下
此时再次点击运行,便可以发现所有exe都已经放置到了ouput文件夹中
最后
该方法应该是最为简单直接的方式,但是有一个无法避免的弊端就是 不允许路径或者文件名称上有中文存在。
否则会出现错误
该问题笔者水平有限,暂时还没有合适的解决方法,也欢迎找到解决方案的朋友们私信或者评论区回复。
Tips:
新手一枚,如果觉得有疑问可以私信询问!
如果上述文章内容有讲得不正确或者不清楚的地方,欢迎留言评论区或者私信!
最后,能给我一个小小的赞或者关注吗😘