鉴于网上关于VSCode上配置C++的文章都已经太老了,在自己看完微软提供的部分文档后,想写一篇关于在VSCode上配置C++的文章,分享一下,下面进入正题:
2019.5.20更新: 添加一些个人觉得有用的个人设置,仅供参考
"editor.minimap.enabled": false, 隐藏缩略图
"editor.snippetSuggestions": "none", 关闭snippet
"editor.formatOnType": true, 每写完一行就自动格式化
"clang.completion.completeMacros": false, 关闭烦人的宏
下面是clang和微软官方c++插件的搭配使用
"C_Cpp.default.cppStandard": "c++17",
"C_Cpp.default.cStandard": "c11",
"C_Cpp.autocomplete": "Default",
"C_Cpp.errorSquiggles": "Disabled",
"C_Cpp.clang_format_style": "Visual Studio",
"clang.cxxflags": [
"-std=c++17",
"-Wall",
],
"clang.cflags": [
"-std=c11",
"Wall"
],
"clang.completion.triggerChars": [
".",
":",
">"
],
"clang.completion.enable": false,
"clang.diagnostic.enable": true,
准备工作
下载微软官方提供的C/C++,你可以看到,官方提供的插件评分并不高,我自己还下载了一个C/C++ Clang Command Adapter插件和Include Autocomplete插件搭配使用
编译运行
方式
第一种直接在商店下载插件就可以使用,不过进行了一些小小的配置后方便使用,最好是能把Run In Terminal,Save File Before Run,clearPreviousOutput,ignoreSelection这几个选项配置下。
-
通过编写tasks.json配置文件
了解下VSCode中的预定义变量
VSCode更新后的配置文件编写的变化
-
Here is a migration guide:
taskName: Use the
label
property instead.isShellCommand: Use the
"type": "shell"
property instead.isBuildCommand: Use the
"group": "build"
property instead.isTestCommand: Use the
"group": "test"
property instead.echoCommand: Use the
"presentation" : { "echo": "..." }
property instead.showOutput: Use the
"presentation" : { "reveal": "..." }
property instead.suppressTaskName: By default, the task name gets appended to the list of arguments when running a task version
0.1.0
. Since version2.0.0
supports commands per task, you can inline the command into the task and specify the arguments accordingly.
所以以前那些博客的配置标签你自己需要去改正,从0.1.0到2.0.0的一些变化,我把链接放在这
配置
了解了vscode中的预定义变量后,首先要调出tasks.json文件,我放了一个动图在下面,视频刚开始的时候我按了ctrl+shift+b组合键,后面的操作就在图里了,当然这里我把debug需要用到的launch.json文件也调出来了
下面开始编写文件
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-Wall",
"-std=c++17",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"presentation": { //控制终端显示
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
},
{
"label": "run",
"type": "shell",
"dependsOn": ["build"],
"command": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"presentation": { //控制终端显示
"echo": false,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
//"problemMatcher": [],
"group": {
"kind": "test",
"isDefault": true
}
}
]
}
这里我参考了下官方文档和知乎ctuu的文章,写出了这个组合task,这个task里面包括两个配置,一个是编译,一个是运行,如何编写你可以点击官方文档的链接,同时可以在vscode中把鼠标放到参数上就会有参数所对应的功能显示出来。我们可以弄一个键位一键编译运行,在vscode左下角的设置上点击键位设置
然后点击运行测试程序即可
我设置的为f12,按照自己喜好即可
调试
C/C++的调试需要编写launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false, //设为false时使用集成终端,true为外置终端
"linux": {
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb"
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build"
}
]
}
参数的介绍请看官方文档,其实一目了然,基本都可以猜对,配置完成后,在编译过后就可以对代码进行调试
放两张效果图
1.编译运行
2.调试
对于多文件的配置需要cmake或makefile,其实实质上都是用makefile来执行编译链接
推荐好文:
1.CMake:https://www.hahack.com/codes/cmake/