如何在VS Code中借助WSL/Bash运行任务?
在VS Code中通过WSL的GCC编译运行C代码
我懂你想在VS Code里实现像Sublime3那样,直接调用WSL里的GCC编译运行C代码的需求——毕竟WSL搞开发工具、配置环境都方便,出问题重建成本也低。下面直接给你能跑通的tasks.json配置,还有细节解释:
完整的tasks.json配置
先在VS Code里按Ctrl+Shift+B(或者通过菜单栏「终端→配置任务」)打开任务配置,选择「创建tasks.json文件」,然后把默认内容替换成下面的代码:
{ "version": "2.0.0", "tasks": [ { "label": "WSL GCC 编译运行", "type": "shell", "command": "bash.exe", "args": [ "-c", "gcc $(wslpath \"${file}\") -o \"${file_base_name}\" && ./\"${file_base_name}\"" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "调用WSL中的GCC编译当前C文件并运行" } ] }
关键配置说明
- 核心命令逻辑:通过
bash.exe让Windows的PowerShell调用WSL环境,用wslpath "${file}"把VS Code提供的Windows格式路径转换成WSL能识别的/mnt/开头路径,再传给GCC编译。编译完成后直接运行生成的可执行文件。 - VS Code预定义变量:
${file}代表当前打开文件的完整Windows路径,${file_base_name}是不带后缀的文件名,这样编译出的可执行文件和源文件同名,方便管理。 - 体验优化:
problemMatcher会让编译时的错误、警告直接显示在VS Code的「问题」面板里,方便快速定位;把这个任务设为默认构建任务后,按Ctrl+Shift+B就能一键触发编译运行。
关于你之前的脚本尝试
你用脚本的思路其实没问题,只是参数传递的引号嵌套出错了。如果还是想用脚本,把tasks.json里的args改成这样:
"args": ["-c", "myscript.sh \"${file}\""]
同时要在WSL里给脚本加可执行权限(运行chmod +x myscript.sh),脚本里的wslpath调用也要记得给参数加引号,避免带空格的路径出问题。不过直接用上面的tasks.json配置更简洁,不用额外维护脚本。
内容的提问来源于stack exchange,提问作者Evan Rosica
相关产品推荐
相关产品推荐

