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/

你可能感兴趣的:(Linux 下的VSCode C++配置)