当前位置: 首页 > article >正文

VScode clangd插件安装

前提

在VScode中写C++代码时,总会用到 C/C++ 这个插件,也就自然而然地使用了这个插件带来的代码跳转和代码提示功能。但是当代码变地很多时,就会变得非常慢。所以经过调查后弃用C/C++ 插件的这个功能,使用 clangd 这个插件来提示C++代码和跳转。

Clang 安装使用

安装步骤如下:

  1. 在VScode的extension中搜索 clangd 安装。

  2. 在settings中设置 clangd 二进制文件路径。如下图所示:
    在这里插入图片描述
    我这里显示的路径是VScode自动帮助我下载的 clangd 路径。就是当你下载好 clangd 插件后,它会自动检测你的环境中有没有安装 clangd ,如果没有它会在右下角提示你是否要下载 clangd ,如果走这条路的话,它会自动帮你下载并配置好路径。另一条路就是我们的环境中已经安装了 clangd ,那我们就就要将安装路径填在这里(clang官方下载地址)。

  3. 禁用C/C++插件的提示功能,并重启clangd的服务。如下所示:
    在这里插入图片描述
    default改为disable。然后ctrl+shift+p打开command palette,重启 language server。
    在这里插入图片描述

  4. 关于 clangd 的一些配置选项说明如下:
    在VScode中我们安装的是 clangd 插件,它的背后使用了 clangd这个语言服务(也就是一个二进制文件),我们可以在VScode中设置一些参数传给这个 clangd 这个二进制文件,那么它都有什么可选项呢?
    如果你走的是上面的第二条路径,在命令行输入clangd --help-list-hidden就可以看到它支持的参数;如果是VScode帮助你安装的,要进到安装目录下再输入这条命令就可以看到。展示如下:
    在这里插入图片描述
    太多了,一张图展示不了。我们选择其中比较重要的几条进行配置如下,将其添加到setting.json中:

        "clangd.arguments": [
            "--log=verbose",  // 生成更详细的日志
            "--pretty",  // 输出的json更美观
            "--completion-style=detailed",   // 详细的代码补全
            "--clangd-tidy", // 使用clang-tidy进行代码静态检查
            "--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*", // 指定clang-tidy检查的规则
            "-j=8",  // 使用8个线程
            "--background-index",  // 后台索引
            "--pch-storage=disk",  // 使用disk存储PCH文件
            "--function-arg-placeholders=false",  // 函数参数不使用占位符
        ]
    

注意事项

  1. 无论什么时候对 clangd 插件做修改后,都要重启 language server
  2. 如果你选择让VScode自动帮助你下载 clangd ,然后一直显示无法下载,网络不好。配置下VScode的代理,在setting.json中添加下面的代理:
    在这里插入图片描述
    下载速度就会很快了。
  3. clangd 插件的使用依赖于你cmake工程时产生的 compile_commands.json 文件,如果cmake时没有输出这个文件,在CMakeLists.txt中添加set(CMAKE_EXPORT_COMPILE_COMMANDS ON)这行代码。或者在命令行中使用cmake时添加-DCMAKE_EXPORT_COMPILE_COMMANDS=on

参考链接

  1. https://juejin.cn/post/7126880493668139021
  2. https://blog.csdn.net/TM1695648164/article/details/138271582

http://www.kler.cn/a/409911.html

相关文章:

  • 优雅的不等式——Hard
  • 【es6】原生js在页面上画矩形添加选中状态高亮及显示调整大小控制框(三)
  • SAP_MM/CO模块-超详细的CK11N/CK40N取值逻辑梳理(十几种业务场景,1.76W字)
  • JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
  • 【大数据学习 | Spark-Core】Spark提交及运行流程
  • java @Override 详解
  • ModuleNotFoundError: No module named ‘_ssl‘ centos中的Python报错
  • MaxKB构建本地大语言模型问答系统打造属于你的智能问答应用
  • JavaScript引入和变量
  • Vue 3 异步组件教程
  • 【Docker系列】批量删除特定前缀的镜像 Tag
  • Redis中的zset底层实现
  • Git简单介绍
  • 问题杂谈(三十九)联想thinkPad突然黑屏,开机没反应,只是插电源的时候电源键亮了三下
  • 数据库的联合查询
  • HTML实现 扫雷游戏
  • Rust编程与项目实战-模块std::thread(之二)
  • 文本数据分析(nlp)
  • vue3 + ts:开发插件 / Plugins / 注册全局实例 / 在 template 与 setup 中使用 / provide、inject
  • react后台管理系统(三)
  • 下载并安装Visual Studio 2017过程
  • Vue.observable 全解析:Observable 是什么及使用场景剖析
  • React 前端框架深度剖析
  • Macos远程连接Linux桌面教程;Ubuntu配置远程桌面;Mac端远程登陆Linux桌面;可能出现的问题
  • RT-DETR:替代YOLO的更快实时目标检测模型及其Pytorch实现【附源码】
  • VirtIO实现原理之数据结构与数据传输演示(1)