VSCode启动C++项目提示程序不存在,如何修改launch.json自动创建缺失构建目录?
需求实现方案
该需求可以实现,无法仅通过修改launch.json单独完成,需要配合VSCode的任务配置文件tasks.json,在调试启动前执行构建前置任务,自动创建输出目录并完成编译生成可执行文件。
1 修改launch.json配置
在原有配置中新增preLaunchTask字段关联前置构建任务,同时建议将硬编码路径替换为VSCode内置变量${workspaceFolder}提升通用性,修改后参考配置如下:
{ "version": "0.2.0", "configurations": [ { "name": "C/C++ Runner: Debug Session", "type": "cppdbg", "request": "launch", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "program": "${workspaceFolder}\\build\\Debug\\outDebug", "internalConsoleOptions": "openOnSessionStart", "MIMode": "gdb", "miDebuggerPath": "gdb", "externalConsole": false, "preLaunchTask": "build_cpp_debug", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
2 新增tasks.json构建任务
在项目.vscode目录下新建tasks.json文件,配置自动创建目录、编译代码的任务,Windows环境使用MinGW gcc的参考配置如下:
{ "version": "2.0.0", "tasks": [ { "label": "build_cpp_debug", "type": "shell", "command": "New-Item -ItemType Directory -Force ${workspaceFolder}\\build\\Debug; g++ ${workspaceFolder}\\*.cpp -o ${workspaceFolder}\\build\\Debug\\outDebug -g", "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] }
如果使用CMake管理项目,无需手动写创建目录的命令,将command字段替换为以下内容即可,CMake会自动生成输出目录:
cmake -B ${workspaceFolder}/build -DCMAKE_BUILD_TYPE=Debug; cmake --build ${workspaceFolder}/build
注意事项
preLaunchTask的取值必须和tasks.json中label字段的内容完全一致,大小写也要匹配- 编译命令中必须携带
-g参数,否则生成的可执行文件不含调试符号,无法正常启动调试 - 如果是Linux/WSL环境,将路径分隔符替换为
/,创建目录的命令替换为mkdir -p build/Debug - 若使用MSVC编译器,将编译命令替换为对应MSVC的编译指令即可
内容的提问来源于stack exchange,提问作者Moami
相关产品推荐
相关产品推荐

