Linux 下的VSCode C++配置

鉴于网上关于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插件搭配使用

编译运行

方式
  1. 第一种直接在商店下载插件就可以使用,不过进行了一些小小的配置后方便使用,最好是能把Run In Terminal,Save File Before Run,clearPreviousOutput,ignoreSelection这几个选项配置下。

  2. 通过编写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 version 2.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文件也调出来了

image

下面开始编写文件

{
    // 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左下角的设置上点击键位设置

image

然后点击运行测试程序即可

image

我设置的为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.编译运行

image

2.调试

image

对于多文件的配置需要cmake或makefile,其实实质上都是用makefile来执行编译链接

推荐好文:

1.CMake:https://www.hahack.com/codes/cmake/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容