你是否注意到,即使只编写一个C文件,编译后也会产生多种输出文件?

比如 exe、ilk、obj、pdb 等编译生成的文件

对于学习C语言来说,这些文件可以忽略。但在实际项目中,我们需要进行有效的目录管理。

配置步骤(共2步:修改tasks.json和launch.json)

  1. 修改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"
}

  1. 修改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目录"即可一键清除所有编译产物。

更多推荐