VSCode作为一款开源、先进的具有高度扩展性的编辑器,越来越收到人们的喜欢。今天我将为大家分享一下Windos10上VSCode的安装与配置(C/C++)。
教程分为三部分:
1、 VSCode的安装
2、 MSYS2的安装与配置
3、 VSCode调试配置
一、VSCode的安装
Ⅰ、清除旧版本数据
如果你想重新安装全新的版本,那么你就需要进行下面这些步骤(正常卸载软件后仍然会保留配置)
进入
C:\Users\(用户名)
在该目录下有个.vscode文件夹,保留着你下载的插件的信息
进入
C:\Users\(用户名)\AppData\Roaming\
在该目录下有个Code文件夹,里面存放有相关配置文件
【注意!AppData目录需要打开查看隐藏文件方可查看,详情百度】
一般来说(卸载后)手动删除以上两个文件夹,下次(安装后)启动就是全新的VSCode
Ⅱ、下载
点击链接
https://code.visualstudio.com/
进入VSCode官方进行下载,或者直接百度VSCode,点击官方链接进入。
这里根据系统版本选择,这里选择
Windows x64 User installer的stable版本
安装过程很容易,这里就不赘述了。只需要注意下面图片的选择。
安装完成后先放在一边。
二、MSYS2的安装与配置
Ⅰ、MSYS2的安装
百度直接搜索MSYS2可以进入其官网下载,里面也有详细的文档资料。
https://www.msys2.org/
如果网友嫌弃速度慢的话,可以上清华大学开源软件镜像站下载,里面有很多开源软件的镜像下载链接和说明。这里我用清华大学开源软件镜像站下载,官方方式与其一样。
https://mirrors.tuna.tsinghua.edu.cn/
右上角搜索“MSYS”即可查找到。
进入相应目录
找到对应你机器版本的下载
(x86_64是64位,i686是32位)
桌面右键“我的电脑”,点击“属性”可以查看机器版本
下载完之后进行安装,安装过程没有需要注意的地方,这里不赘述。
Ⅱ、MSYS2的配置
在进行配置之前需要先修改镜像源(下载软件的地址改为国内地址速度更快)
进入
D:\MSYS2\etc\pacman.d
【具体路径看你安装的文件夹,例如我是安装在D盘下的MSYS2文件夹里】
里面有三个文件
mirrorlist.mingw32、mirrorlist.mingw64、mirrorlist.msys
进行的操作参考清华大学开源软件镜像站的方法
相信用过Arch系Linux的人对pacman包管理器不会陌生
文件修改之后,只能通过开始菜单里启动MSYS2
这里将其拉到桌面直接创建快捷方式,方便下次打开。
【!! 64位还是32位需要根据你的机器选择,小新这里的机器是64位,后面不再区别赘述64位还是32位,希望大家区分清楚】
打开桌面快捷方式,输入以下指令刷新同步软件库
(用户名太骚了码一手)
【刚开始打开MSYS2的时候界面跟我不一样,我是安装了zsh和对终端进行调整后的效果,但并不影响使用】
刷新软件库之后就可以下载需要的软件了。这里只介绍C/C++,故只需要下载GCC以及GDB即可。
安装过程只需要按照以下命令执行就可以。
这里就安装好了GCC(包含gcc及g++)
下面安装GDB
到这里GCC及GDB就安装好了。但是通过命令提示符还是不能够调用指令。这里还需要添加环境变量。
右键“我的电脑”,点击“属性”, 点击左边“高级系统设置”,依次点击选项卡“高级”,右下角“环境变量”。
【需要注意的是:D:\MSYS2这里需要改为你安装MSYS2的目录。64位选择路径mingw64,32位选择路径mingw32】
修改之后一路点击“确定”退出。按下【“开始菜单键”+“r“】调出运行,输入”cmd“启动命令提示符,输入”gcc -v“,出现以下提示表示一切成功(gdb同理)
到这里MSYS2的操作就完成了
三、 VSCode调试配置、C/C++配置
初次打开VSCode是全英文,这里我们先安装中文包插件。
接着再安装几个必需插件
插件的设置这里就不赘述了。这里主要介绍调试器(GDB)在VSCode中的设置及使用。
初次使用我们需要先添加“工作区“
添加工作区之后,我们可以在该工作区下设置调试器
在VSCode中按下组合键
"shift"+"ctrl"+"p"
,输入debug,找到相关命令
C/C++:生成和调试活动文件
可以看到在工作区下出现一个目录“.vscode”,里面有launch.json和tasks.json两个文件
(如果没有的话自行创建,两个文件需放在工作区”.vscode“文件夹下)
编辑设置两个文件
这里贴上我的两个文件配置:
1、 launch.json
{ "version": "0.2.0", "configurations": [ { "name": "C++", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "g++", //调用tasks.json中的g++标签程序 }, { "name": "C", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder} ", "environment": [], "externalConsole": true, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "gcc", } ]}
2、 tasks.json
{ "version": "2.0.0", "tasks": [ { "type": "shell", "label": "gcc", "command": "D:\\MSYS2\\mingw64\\bin\\gcc.exe", //gcc所在位置需要自行修改 "args": [ "-std=c18", "-Wall", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", ], "options": { "cwd": "D:\\MSYS2\\mingw64\\bin" //gcc所在的上级目录,需要自行修改 }, "problemMatcher": [ "$gcc" ], "group": "build", "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": false, "clear": true }, }, { "type": "shell", "label": "g++", "command":"D:\\MSYS2\\mingw64\\bin\\g++.exe", //同gcc的配置文件说明 "args": [ "-std=c++2a", "-g", "-Wall", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", ], "options": { "cwd": "D:\\MSYS2\\mingw64\\bin" //同上一个cwd }, "problemMatcher":"$gcc", "group": "build", "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": false, "clear": true }, }, ]}
以上就是我两个文件的配置,大家可以根据需要自行修改。
(除了修改一些路径,其余可以直接套用)
【!注意:程序调试的时候遇到scanf等一些库函数会进入内部,此时需要单步跳出来跳出库函数并进行输入,不然会报错。(但实际不影响,只是无法继续调试)】
最后附上我的设置setting.json
(含有插件:彩虹括号、vim、gitee设置同步、c/c++、code runner)
Settings.json的路径
C:\Users(用户)\(用户名)\AppData(隐藏的文件夹)\Roaming\Code\User\settings.json
Settings.json:
{ "C_Cpp.default.compilerPath": "D:\\MSYS2\\mingw64\\bin\\gcc.exe", "C_Cpp.default.cppStandard": "c++20", "C_Cpp.default.cStandard": "c18", "C_Cpp.default.includePath": [ "D:\\MSYS2\\mingw64\\include", "D:\\MSYS2\\mingw64\\include\\c++", "D:\\MSYS2\\mingw64\\include\\c++\\10.1.0", "D:\\MSYS2\\mingw64\\include\\c++\\v1", "D:\\MSYS2\\mingw64\\x86_64-w64-mingw32\\include" ], "C_Cpp.default.intelliSenseMode": "clang-x64", "C_Cpp.workspaceParsingPriority": "high", "code-runner.customCommand": "-Wall", "code-runner.executorMap": { //按下组合键{“ctrl“ + ”alt“ + ”n“}即可一键运行程序 "javascript": "node", "java": "cd $dir && javac $fileName && java $fileNameWithoutExt", "c": "cd $dir && gcc -std=c18 $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe", "cpp": "cd $dir && g++ -std=c++2a $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe", "sh": "./$fileName", "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "php": "php", "python": "python -u", "ruby": "ruby", "go": "go run", "lua": "lua", "powershell": "powershell -ExecutionPolicy ByPass -File", "bat": "cmd /c", }, "code-runner.fileDirectoryAsCwd": true, "code-runner.ignoreSelection": true, "code-runner.saveFileBeforeRun": true, "explorer.confirmDelete": false, "code-runner.runInTerminal": true, "code-runner.clearPreviousOutput": true, "C_Cpp.clang_format_path": "D:\\MSYS2\\mingw64\\bin\\clang-format.exe", "window.zoomLevel": -1, "editor.fontSize": 18, "editor.cursorStyle": "block", "editor.defaultFormatter": "ms-vscode.cpptools", "editor.dragAndDrop": false, "editor.lineNumbers": "relative", "editor.smoothScrolling": true, "editor.cursorBlinking": "smooth", "editor.cursorSmoothCaretAnimation": true, "diffEditor.renderSideBySide": false, "diffEditor.ignoreTrimWhitespace": false, "editor.acceptSuggestionOnEnter": "smart", "editor.quickSuggestions": { "other": true, "comments": true, "strings": true }, "editor.snippetSuggestions": "bottom", "editor.suggest.maxVisibleSuggestions": 15, "files.autoGuessEncoding": true, "files.trimFinalNewlines": true, "files.trimTrailingWhitespace": true, "workbench.colorTheme": "Monokai", "workbench.tips.enabled": false, "workbench.editor.labelFormat": "long", "workbench.editor.tabSizing": "shrink", "workbench.editor.untitled.labelFormat": "name", "window.menuBarVisibility": "toggle", "debug.console.closeOnEnd": true, "debug.showBreakpointsInOverviewRuler": true, "extensions.autoUpdate": false, "terminal.integrated.cursorBlinking": true, "terminal.integrated.enableBell": true, "terminal.integrated.fontSize": 17, "problems.showCurrentInStatus": true, "timeline.pageOnScroll": true, "telemetry.enableCrashReporter": false, "telemetry.enableTelemetry": false, "git.showPushSuccessNotification": true, "bracket-pair-colorizer-2.activeScopeCSS": [ "borderStyle : solid", "borderWidth : 1px", "borderColor : {color}", "opacity: 0.5" ], "bracket-pair-colorizer-2.forceIterationColorCycle": true, "bracket-pair-colorizer-2.forceUniqueOpeningColor": true, "bracket-pair-colorizer-2.colorMode": "Consecutive", "vim.changeWordIncludesWhitespace": true, "vim.cursorStylePerMode.insert": "block", "vim.cursorStylePerMode.normal": "block", "vim.cursorStylePerMode.replace": "block", "vim.cursorStylePerMode.visual": "block", "vim.cursorStylePerMode.visualblock": "block", "vim.cursorStylePerMode.visualline": "block", "vim.hlsearch": true, "vim.searchHighlightTextColor": "Green", "vim.searchHighlightColor": "0", "vim.useSystemClipboard": true, "vim.vimrc.enable": false, "vim.leader": "", "vim.foldfix": true, "vim.useCtrlKeys": true, "vim.insertModeKeyBindings": [ { "before": ["j", "j"], "after": [""] } ], "vim.normalModeKeyBindings": [ { "before": ["", "t"], "after": [":", "t", "a", "b", "n", "e", "w", ""], }, { "before": ["", "c"], "after": [":", "t", "a", "b", "c", ""], }, { "before":["", "m"], "after":[":", "m", "a", "r", "k", "s", ""], }, { "before": ["", "g"], "after": [""], }, { "before": ["", "s"], "after": [":", "s", "p", ""], }, { "before": ["", "v"], "after": [":", "v", "s", "p", ""], }, { "before": [";"], "after": [":"], }, { "before": ["q", "q"], "after": [":", "q", "!", ""], }, { "before": ["f", "f"], "after": [":", "w", ""], }, { "before": ["q", ";"], "after": ["q", ":"], }, { "before": ["9"], "after": ["$"], }, { "before": ["", "n"], "after": [":", "n", "o", "h", ""], }, { "before": ["[", "c"], "after": ["g", "c", "c"], }, { "before": ["", "f"], "after": ["z", "a"], }, ], "vim.visualModeKeyBindings": [ { "before": [">"], "commands": ["editor.action.indentLines"], }, { "before": ["], "commands": ["editor.action.outdentLines"], }, { "before": ["[", "c"], "after": ["g", "c"], }, ],}
如果大家有什么想尝试的可以微信后台留言给我