虽然现在版本的vscode能够自动生成编译调试C++的task.json
和launch.json
,但是最近在使用VSCode写C++时发现会生成不少不需要的临时文件,比如*.obj、.ilk和.pdb,造成目录十分的混乱。在多方百度无果后自己摸索了一种方法,核心思想是在编译任务结束后执行一个自定义脚本来删除临时文件。
task.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cl.exe 生成活动文件",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/nologo",
"/Fe:",
//修改了下面一行,把生成的可执行文件全部放到Bin目录下
"${fileDirname}\\Bin\\${fileBasenameNoExtension}.exe",
"${file}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
},
//自己定义的任务
{
//label随便取,和后面launch对应就好
"label": "remove obj",
"type": "shell",
//自己写的脚本路径
"command": "./.vscode/remove.bat",
//这个目录设置要有
"options": {
"cwd": "${fileDirname}"
},
//本任务依赖于上面的编译任务,所以launch调用的时候直接调用本任务就可以,然后会自动执行依赖任务
"dependsOn": ["C/C++: cl.exe 生成活动文件"]
}
],
"version": "2.0.0"
}
remove.bat
del *.obj
del *.pdb
del .\\Bin\\*.ilk
del .\\Bin\\*.pdb
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "cl.exe - 生成和调试活动文件",
"type": "cppvsdbg",
"request": "launch",
//相对应的修改这里,在路径里添加一个Bin
"program": "${fileDirname}\\Bin\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"console": "externalTerminal",
//修改了这里,与自定义任务的label对应
"preLaunchTask": "remove obj"
}
]
}
修改完成后到C++文件下按F5
,将会运行:编译->删除->启动程序