• 为vscode配置clangd


    clangd能提供更好的补全和提示,自带检查一些warning的问题,可以减少大家未来找存在的warning的时间。经过配置可以在unittest和timetest中也实现自动补全,平均速度比vscode c/c++插件更快。

    安装clangd 后端

    sudo apt-get install clangd
    
    • 1

    安装clangd 前端

    在插件市场搜索clangd。安装即可。注意c/c++可以不用卸载,否则调试可能会有点问题。
    在这里插入图片描述

    修改基础配置

    1. 在project folder下建立.vscode文件夹,创建settings.json文件。如下图
      在这里插入图片描述

    2. settings.json内容如下(注意本地可能需要也配置clangd.arguments否则可能会有问题,陈天浩就有这个问题)

    {
      "files.associations": {
        "iostream": "cpp",
        "intrinsics.h": "c",
        "ostream": "cpp",
        "vector": "cpp"
      },
      // 开启粘贴保存自动格式化
      "editor.formatOnPaste": true,
      "editor.formatOnSave": true,
      "editor.formatOnType": true,
      "C_Cpp.errorSquiggles": "Disabled",
      "C_Cpp.intelliSenseEngineFallback": "Disabled",
      "C_Cpp.intelliSenseEngine": "Disabled",
      "C_Cpp.autocomplete": "Disabled", // So you don't get autocomplete from both extensions.
      "clangd.path": "/usr/bin/clangd",
      // Clangd 运行参数(在终端/命令行输入 clangd --help-list-hidden 可查看更多)
      "clangd.arguments": [
        // 让 Clangd 生成更详细的日志
        "--log=verbose",
        // 输出的 JSON 文件更美观
        "--pretty",
        // 全局补全(输入时弹出的建议将会提供 CMakeLists.txt 里配置的所有文件中可能的符号,会自动补充头文件)
        "--all-scopes-completion",
        // 建议风格:打包(重载函数只会给出一个建议)
        // 相反可以设置为detailed
        "--completion-style=bundled",
        // 跨文件重命名变量
        "--cross-file-rename",
        // 允许补充头文件
        "--header-insertion=iwyu",
        // 输入建议中,已包含头文件的项与还未包含头文件的项会以圆点加以区分
        "--header-insertion-decorators",
        // 在后台自动分析文件(基于 complie_commands,我们用CMake生成)
        "--background-index",
        // 启用 Clang-Tidy 以提供「静态检查」
        "--clang-tidy",
        // Clang-Tidy 静态检查的参数,指出按照哪些规则进行静态检查,详情见「与按照官方文档配置好的 VSCode 相比拥有的优势」
        // 参数后部分的*表示通配符
        // 在参数前加入-,如-modernize-use-trailing-return-type,将会禁用某一规则
        "--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*",
        // 默认格式化风格: 谷歌开源项目代码指南
        // "--fallback-style=file",
        // 同时开启的任务数量
        "-j=2",
        // pch优化的位置(memory 或 disk,选择memory会增加内存开销,但会提升性能) 推荐在板子上使用disk
        "--pch-storage=disk",
        // 启用这项时,补全函数时,将会给参数提供占位符,键入后按 Tab 可以切换到下一占位符,乃至函数末
        // 我选择禁用
        "--function-arg-placeholders=false",
        // compelie_commands.json 文件的目录位置(相对于工作区,由于 CMake 生成的该文件默认在 build 文件夹中,故设置为 build)
        "--compile-commands-dir=build"
      ],
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    生成compile_commands.json文件

    确保项目能够正常编译的前提下

    cd build
    cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .. -G 'Unix Makefiles'
    
    • 1
    • 2

    之后在build目录下就会生成对应的compile_commands.json,格式如下。请务必确保存在compile_commands.json文件,这是clangd补全依赖文件,否则会失效

    [
    {
      "directory": "",
      "command": "",
      "file": "",
    },
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    生成结束后可能需要手动启动reload window或者使用manually activate extension。之后每次打开project一般会自动开起。

    在这里插入图片描述

    在这里插入图片描述
    可以通过ps -ef | grep clang查看是否存在进程

    在这里插入图片描述

    基本效果

    补全

    在这里插入图片描述

    warning提醒

    在这里插入图片描述

    自动修改存在问题

    在这里插入图片描述
    在这里插入图片描述

    注意事项

    1. 使用后最好使用下图close remote关闭,否则后台可能有进程未关闭

    在这里插入图片描述

    1. 进程编译的时候,clangd会自动重新生成缓存,会占用较大的硬盘空间可能需要定时清理

    在这里插入图片描述

  • 相关阅读:
    Spring Boot 实现跨域的 5 种方式,总有一种适合你,建议收藏
    Flutter 中的 checkboxListTile 小部件:全面指南
    GBase8s数据库对 SET COLLATION 的限制
    java计算机毕业设计Vue和mysql智能图书管理系统MyBatis+系统+LW文档+源码+调试部署
    CSS之垂直水平居中的背后
    程序性能优化
    设计模式之命令模式
    R-tree总结
    设计数据密集型应用的主要关注点
    青少年python系列 33.python安装非内置模块
  • 原文地址:https://blog.csdn.net/xzq1207105685/article/details/126091947