Windows vscode C/C++配置(采用clangd)
1.软件及插件下载.
进入vscode官网下载软件,进入后下载插件如下:
提供高亮,智能提示,补全等功能
安装Code Runner后会看到右上角有一个小三角形,即一键运行.(ctrl+alt+n)
C/C++的替代版本,代码提示上速度更快,推荐
其他可选插件:
小图标美化,养眼
提供简体中文
漂亮的主题,插件商店搜索theme,自己挑.
C/C++工程项目创建,自动生成makefile,方便多文件编写需要
2.环境准备
MinGW配置
-
下载mingw-w64
博主采用mingw-w64(以下简称mingw64)作为工具链,以下摘自mingw-w64官网:
"Mingw-w64 is an advancement of the original mingw.org project, created to support the GCC compiler on Windows systems. "
大意就是mingw64作为原mingw项目的延伸,在win平台上提供gcc编译器等工具,具体版本的下载和mingw的详细介绍参见官网. -
将bin目录添加到环境变量:
mingw64主目录如下,拷贝bin路径
按win键,键入“高级”,进入如下选项
执行顺序:环境变量->编辑->新建
粘贴刚才的bin路径. -
检测是否配置成功
打开powershell或cmd,输入gcc -v,出现以下画面则成功.
llvm(clangd需要)
下载llvm,将主目录下的bin目录添加到环境变量,具体步骤大致同上,最后命令行输入:clang -v 出现版本号即成功.
3.vscode配置
在任意位置新建一个文件夹作为工作目录,在vscode里"File->Open Folder"(Ctrl+K+O)打开此文件夹,再点击左栏的"New Floder"创建名为“.vscode”的文件夹,在此文件夹下新建三个文件"settings.json",“tasks.json”,“launch.json”.
- settings.json 主要进行设置
{
"files.defaultLanguage": "c++", // ctrl+N新建文件后默认的语言
"editor.formatOnType": true, // 输入分号(C/C++的语句结束标识)后自动格式化当前这一行的代码
"editor.acceptSuggestionOnCommitCharacter": true,
"editor.formatOnSave": true,
"editor.suggest.snippetsPreventQuickSuggestions": false, // clangd的snippets有很多的跳转点,不用这个就必须手动触发Intellisense了
"editor.acceptSuggestionOnEnter": "on", // 我个人的习惯,按回车时一定是真正的换行,只有tab才会接受Intellisense
// "editor.snippetSuggestions": "top", // (可选)snippets显示在补全列表顶端,默认是inline
"code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
"code-runner.saveFileBeforeRun": true, // run code前保存
"code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
"code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息,默认false
"code-runner.ignoreSelection": true, // 默认为false,效果是鼠标选中一块代码后可以单独执行,但C是编译型语言,不适合这样用
"terminal.integrated.enableBell": true,
"code-runner.executorMap": {
"javascript": "node",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -std=c++14 -static-libgcc -fexec-charset=GBK && &$dir$fileNameWithoutExt" // 此处采用CBK编码输出为了输出中文不乱码
},
"C_Cpp.clang_format_sortIncludes": true // 格式化时调整include的顺序(按字母排序)
}
- tasks.json 处理编译任务
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "Compile",
"command": "cd ${fileDirname}/../ ; mingw32-make",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
]
},
{
"type": "shell",
"label": "Single_Compile",
"command": "g++",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-Wall",
"-O2",
"-static-libgcc",
"-std=c++17",
"-g"
],
"options": {
"cwd": "D:\\Env\\mingw64\\bin" //换成自己的mingw bin路径
},
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
launch.json 调试配置文件,注意有个"preLaunchTask"标签,即调试之前先进行编译.
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "2.0.0",
"configurations": [
{
"name": "build and debug mutiple files",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Env\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Compile"
},
{
"name": "build and debug single file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Env\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Single_Compile"
},
]
}
上面设置只对单个目录及其子目录产生影响,vscode有个整体的settings.json,那里也可以设置,作用范围是所有工作目录.
File->Preferences->settings,搜索框输入font,点击出现的"edit in settings.json"即进入全局的settings.json配置.
添加如下代码从而转为使用clangd插件.
// C++/C
"clangd.semanticHighlighting": true,
"C_Cpp.intelliSenseEngine": "Disabled",
"C_Cpp.errorSquiggles": "Disabled", // 因为有clang的lint,所以关掉
"C_Cpp.autocomplete": "Disabled",
"clangd.path": "c:\\Users\\Administrator\\AppData\\Roaming\\Code\\User\\globalStorage\\llvm-vs-code-extensions.vscode-clangd\\install\\11.0.0\\clangd_11.0.0\\bin\\clangd.exe",
"clangd.arguments": [
"--completion-style=detailed",
"--header-insertion=never", // 关闭自动插入头文件
],
"clangd.fallbackFlags": [
"--target=x86_64-w64-mingw",
],
4.运行
随便写一个cpp文件,快捷键ctrl+alt+n一键运行
以上演示的是单文件运行,若要多文件运行就得了解makefile或cmake等构建系统,就不赘述了
部分内容转载自知乎vscode如何配置C++,谭九鼎大佬说得很详细,当初就是从那里入门的,而且也提供了一些实在的东西,如删除中间文件的.bat文件和字体等.
最后贴上我放在gitee上的配置文件链接:mingw和llvm
vscode真的不失为一款优秀的编辑器,插件及其丰富,自行探索即可.