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

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.lryc.cn/news/488737.html

相关文章:

  • 【机器学习】- L1L2 正则化操作
  • Logback实战指南:基础知识、实战应用及最佳实践全攻略
  • 基于python的机器学习(三)—— 关联规则与推荐算法
  • 【大模型】LLaMA: Open and Efficient Foundation Language Models
  • 模拟器多开限制ip,如何设置单窗口单ip,每个窗口ip不同
  • hive的存储格式
  • 鸿蒙学习高效开发与测试-应用程序框架(3)
  • 什么命令可以查看数据库中表的结构
  • django基于python 语言的酒店推荐系统
  • 【深度学习|onnx】往onnx中写入训练的超参或者类别等信息,并在推理时读取
  • WebSocket详解、WebSocket入门案例
  • 05_Spring JdbcTemplate
  • Bug:引入Feign后触发了2次、4次ContextRefreshedEvent
  • 最新‌VSCode保姆级安装教程(附安装包)
  • layui 表格点击编辑感觉很好用,实现方法如下
  • 三十一、构建完善微服务——API 网关
  • 非对称之美(贪心)
  • 详细教程-Linux上安装单机版的Hadoop
  • C#桌面应用制作计算器进阶版01
  • [开源] 告别黑苹果!用docker安装MacOS体验苹果系统
  • 多模态大模型(4)--InstructBLIP
  • 【Linux】基于 Busybox 构建嵌入式 Linux(未完成)
  • Unet++改进38:添加GLSA(2024最新改进方法)具有聚合和表示全局和局部空间特征的能力,这有利于分别定位大目标和小目标
  • c++中mystring运算符重载
  • 图像处理 - 色彩空间转换
  • MariaDB面试题及参考答案
  • PostgreSQL常用字符串函数与示例说明
  • 力扣第58题:最后一个单词的长度
  • 【Maven】Nexus几个仓库的介绍
  • SSH免密登陆