近期被数据结构折磨,要重拾C,电脑已经跑不起新版VS,所以用一直开发使用的vscode,就加个编译和调试环境,又可以拿来写C了,完美!
得益于vscode新版的远程连接WSL,并不采用网上千篇一律的MinGW或Cygwin。
以及C/C++的插件
windows系统已经有初始化可用的WSL,并装上g++或gcc,以及gdb
vscode点击左下角的双箭头,选择Remote-WSL: New Window(进到WSL用户路径,需要项目在WSL里)或Remote-WSL: Reopen Folder in WSL(在打开当前电脑的项目时,连接WSL后路径转换成对应的/mnt/···)
调试和编译主要需要两个配置文件,launch.json和tasks.json(编译任务)文件
{
//launch.json
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"preLaunchTask": "build",//调用编译任务
"program": "${workspaceFolder}/a.out",//指当前的目录下的a.out
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,//是否另窗口调试,WSL就选false
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json ,g++编译时不指定编译后的文件名最后生成是a.out
{
//tasks.json
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "g++",
"args": [ //传递参数 最终和command生成例如:g++ -g 当前文件.c -std=c++17
"-g",
"${file}",
"-std=c++17",//使用c17的标准
],
}
]
}
然后回到项目文件,F5
最开始会在终端中执行“任务 - build”,切换到cppdbg: a.out进行打印和输入,就是相当以前的VS小黑窗,"externalConsole": false 的情况就是这样,true就是小黑窗,但设true跳不出来??真实linux环境下跳得出来
用到WSL是因为有些其他开发环境用到,所以在已有WSL下就不想再装MinGW和Cygwin,这个远程连接WSL实际是让当前Windows的vscode运行在linux环境下,所以linux使用vscode调试C/C++也是这样如法炮制的配置。
在不想用旧的版本的VS(跑不动新版本),又想愉快的开发。还是选vscode爽啊。。