vscode C语言编译产物 集中化管理
·
你是否注意到,即使只编写一个C文件,编译后也会产生多种输出文件?
比如 exe、ilk、obj、pdb 等编译生成的文件

对于学习C语言来说,这些文件可以忽略。但在实际项目中,我们需要进行有效的目录管理。
配置步骤(共2步:修改tasks.json和launch.json)
- 修改tasks.json(编译配置) tasks.json是VS Code的编译任务配置文件,用于将编译输出定向到build文件夹:
- 打开.vscode/tasks.json文件(若不存在,按Ctrl+Shift+B→选择"创建tasks.json文件"→选MSVC)
- 替换为以下配置(关键是通过/Fo指定obj输出路径,/Fe指定exe输出路径):
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cl.exe 生成活动文件",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/nologo",
"/Fo${fileDirname}\\build\\", // obj文件输出到build目录
"/Fe${fileDirname}\\build\\", // exe文件输出到build目录
"${file}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: cl.exe"
}
],
"version": "2.0.0"
}
- 修改launch.json(调试配置) 由于exe文件现在输出到build文件夹,需要相应调整调试配置:
{
"configurations": [
{
"name": "C/C++: cl.exe 构建和调试活动文件",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"console": "externalTerminal",
"preLaunchTask": "C/C++: cl.exe 生成活动文件"
}
],
"version": "2.0.0"
}
配置说明:
/Fo${fileDirname}\\build\\:将.obj、.ilk、.pdb等中间文件输出到build文件夹/Fe${fileDirname}\\build\\:将最终的.exe文件输出到build文件夹- 调试配置的program路径需同步调整为build文件夹
使用效果:
- 按Ctrl+Shift+B编译时,会自动在源码目录创建build文件夹
- 所有编译产物(.obj、.ilk、.pdb、.exe)都会存放在build目录
- 源码目录仅保留.c文件,保持整洁
首次编译注意事项:
- VS Code会自动创建build文件夹
- 若提示"找不到路径",可手动创建空的build文件夹
可选优化(清理任务): 在tasks.json中添加清理任务,可一键清空build文件夹:
{
"tasks": [
// 原有编译任务...
{
"label": "清理build目录",
"type": "shell",
"command": "rmdir /s /q ${fileDirname}\\build & mkdir ${fileDirname}\\build",
"problemMatcher": [],
"detail": "删除并重建build文件夹,清理所有编译产物"
}
],
"version": "2.0.0"
}
使用时按Ctrl+Shift+B→选择"清理build目录"即可一键清除所有编译产物。
更多推荐
所有评论(0)