无网络环境下,如何用VS Code的tasks.json完成C++编译运行等操作?
解决VS Code tasks.json编译运行C++并自动关闭外部终端的问题
正确配置的tasks.json
{ "version": "2.0.0", "tasks": [ { "label": "build and run", "type": "shell", "command": "cmd.exe", "args": [ "/C", "mkdir \"${fileDirname}\\Output\" 2>nul && \"C:\\path\\to\\g++.exe\" -Wall -g3 \"${file}\" -o \"${fileDirname}\\Output\\${fileBasenameNoExtension}.exe\" && start cmd.exe /C \"\"${fileDirname}\\Output\\${fileBasenameNoExtension}.exe\" && pause\"" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": [] } ] }
配置说明
整体逻辑:通过
cmd.exe /C执行串联命令,把编译、运行、终端控制整合为一步:mkdir "${fileDirname}\\Output" 2>nul:自动创建Output文件夹,2>nul用来屏蔽“文件夹已存在”的错误提示"C:\\path\\to\\g++.exe" -Wall -g3 "${file}" -o "${fileDirname}\\Output\\${fileBasenameNoExtension}.exe":调用g编译当前C文件,输出到指定的Output目录start cmd.exe /C "\"${fileDirname}\\Output\\${fileBasenameNoExtension}.exe\" && pause"":启动独立外部终端运行程序,/C保证程序运行完成(或用户按任意键后)终端自动关闭;pause是让你能查看运行结果,不需要的话可直接删除
原配置问题根源:
- 保留
options时,shell.executable覆盖了原本的g++编译命令,导致实际只运行了旧的可执行文件,完全没触发编译,所以代码修改后exe不会更新 - 移除
options后,仅执行了编译命令,未添加运行步骤,因此不会弹出终端运行程序
- 保留
注意事项
- 若已将g++加入系统环境变量
PATH,可把"C:\\path\\to\\g++.exe"直接改成g++.exe - 不需要暂停看结果的话,删掉命令里的
&& pause即可,终端会在程序运行结束后立刻关闭
内容的提问来源于stack exchange,提问作者user23487215
相关产品推荐
相关产品推荐

