VSCode使用Clangd

2023-05-16

前言

在使用微软的C/C++插件时,遇到较大项目时,代码提示速度非常的慢,这时可以使用clangd

1、系统安装clangd

版本选择:Linux
github仓库: https://github.com/clangd/clangd/releases

在这里插入图片描述
解压下载好的安装包:

unzip clangd-linux-15.0.6.zip

然后进入该文件夹:

cd clangd_15.0.6/

将bin文件夹下的clangd移动到 /usr/bin 目录下:

cd bin/
sudo mv clangd /usr/bin/

将 lib 目录下,拷贝至 /usr/local/lib 目录下:

cd …/lib/
sudo mv clang /usr/local/lib

2、VSCode 安装 Clangd

安装插件:
在这里插入图片描述
clangd扩展设置clangd路径:文件 -> 首选项 -> 设置

在搜索框中输入:@ext:llvm-vs-code-extensions.vscode-clangd Path

在这里插入图片描述此时已经设置完成,重启一下VSCode

3、解决 clangd bug

创建一个 main.c 文件,内容为:

#include <stdio.h>

int main()
{
    printf("Hello World !\n");

    return 0;
}

此时会报一个错误

In included file: ‘stddef.h’ file not foundclang(pp_file_not_found)

解决办法如下:
在clangd扩展设置界面找到 Clangd: Fallback Flags
在这里插入图片描述添加一下内容

-xc //clangd默认检测的源文件为c++,手动设置为检测c
-std=c11 //c语言标准
-I/usr/lib/gcc/x86_64-linux-gnu/11/include //clangd有些库指向有问题,手动添加一下文件路径

注意: 这个路径 /usr/lib/gcc/x86_64-linux-gnu/11/include 根据自己的电脑路径来添加

在这里插入图片描述此时在重启一下VSCode,再次打开 main.c 会发现错误消失了

4、打开工程文件

目前正在学习IMX6ULL开发,就以IMX6ULL裸机例程——irq中断处理为例

文件目录如下:

.
├── bsp
│   ├── beep
│   │   ├── bsp_beep.c
│   │   └── bsp_beep.h
│   ├── clk
│   │   ├── bsp_clk.c
│   │   └── bsp_clk.h
│   ├── delay
│   │   ├── bsp_delay.c
│   │   └── bsp_delay.h
│   ├── exti
│   │   ├── bsp_exti.c
│   │   └── bsp_exti.h
│   ├── gpio
│   │   ├── bsp_gpio.c
│   │   └── bsp_gpio.h
│   ├── int
│   │   ├── bsp_int.c
│   │   └── bsp_int.h
│   ├── key
│   │   ├── bsp_key.c
│   │   └── bsp_key.h
│   └── led
│       ├── bsp_led.c
│       └── bsp_led.h
├── build
│   ├── bsp_beep.o
│   ├── bsp_clk.o
│   ├── bsp_delay.o
│   ├── bsp_exti.o
│   ├── bsp_gpio.o
│   ├── bsp_int.o
│   ├── bsp_key.o
│   ├── bsp_led.o
│   ├── __int.bin
│   ├── __int.dis
│   ├── __int.elf
│   ├── __int.map
│   ├── main.o
│   └── start.o
├── imx6u.lds
├── imx6ull
│   ├── cc.h
│   ├── core_ca7.h
│   ├── fsl_common.h
│   ├── fsl_iomuxc.h
│   ├── imx6ull.h
│   └── MCIMX6Y2.h
├── imxdownload
├── load.imx
├── Makefile
└── project
    ├── main.c
    └── start.S

打开之后头文件会显示没有该文件,此时我们设置一下该项目的头文件路径

首先在项目的根目录下创建一个 .vscode 文件夹,并在该文件夹下创建一个 settings.json 文件

在这里插入图片描述

settings.json 中写入以下内容

{
    "clangd.fallbackFlags": [
        "-xc",
        "-std=c11",   //C语言标准
        // 第三方依赖的头文件目录
        "-I/usr/lib/gcc/x86_64-linux-gnu/11/include",
        "-I${workspaceFolder}/project",
        "-I${workspaceFolder}/imx6ull",
        "-I${workspaceFolder}/bsp/led",
        "-I${workspaceFolder}/bsp/delay",
        "-I${workspaceFolder}/bsp/clk",
        "-I${workspaceFolder}/bsp/beep",
        "-I${workspaceFolder}/bsp/gpio",
        "-I${workspaceFolder}/bsp/key",
        "-I${workspaceFolder}/bsp/int",
        "-I${workspaceFolder}/bsp/exti",
      ],
}

此时重新打开该项目,头文件就不会再报错了,也支持函数跳转了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VSCode使用Clangd 的相关文章

  • Linux 以root用户登录无法启动VSCode

    Linux 以root用户登录无法启动VSCode 环境 Ubuntu18 04 VSCode 复现 以root用户登录Ubuntu后单机VSCode图标打开VSCode BUG 无法打开VSCode 原因 VSCode默认不允许以root
  • vscode go mod报错(萌新)

    出现如下报错信息 gopls was not able to find modules in your workspace When outside of GOPATH gopls needs to know which modules y
  • VSCode编码特效

    下载插件 Power Mode 然后来到settings json文件进行修改配置 如果找不到 可以只搜索settings 代码中继续追加这部分代码 explorer confirmDelete false powermode enable
  • Windows下修改VSCode工作区存储目录workspaceStorage

    VSCode会将每个工作区的一些配置 扩展 缓存等保存在一个默认的目录 在Windows下 此默认目录为 AppData Code User workspaceStorage 当存在多个工作空间或扩展时 需要使用大量的磁盘空间 而VSCod
  • 【RTX 3060Ti 深度学习环境配置图文(安装Anaconda、VScode、CUDA、CUDNN、pytorch)】

    RTX 3060Ti 深度学习环境配置图文 安装Anaconda VScode CUDA CUDNN pytorch 配置 安装驱动 一 安装Anaconda 1 1 Anaconda简介 1 2 下载Anaconda 1 3安装Anaco
  • VsCode远程调试服务器python代码(解决相对路径相关问题)

    1 首先在本地使用VsCode调试python代码 可参考链接 VSCode启动Debug模式调试Python文件 2 vscode远程连接服务器 调试python文件 可参考链接 一文掌握vscode远程调试python代码 3 调试时
  • VSCode连接WSL2及VMware,WSL2安装GUI应用

    一 VScode 连接WSL2 参考文章 巨硬官方文档 知乎大佬教程 知乎大佬教程2 1 开启WSL2 支持 使用管理员权限的 Shell 才能安装 WSL2 按 Win X 找到 Windows PowerShell 管理员 并复制执行命
  • VSCODE 系列(三)Settings Sync插件,多人开发同步配置。

    文章目录 前言 一 安装 二 配置 下载 上传 个人应用 团队应用 共享配置 令牌token失效处理 引用 借鉴文章 前言 该插件已被VSCODE弃用 下载在VSCODE上已经无法下载该插件 可以通过在vscode上登录github或微软账
  • vscode cmake 编译32位程序

    vscode cmake 编译32位程序 为什么要用cmake vscode中的C C 插件直接支持的只是最简单的单文件编译 运行和调试 要管理大的项目 或者生成库 C C 插件不能直接支持 需要开发者利用vscode的task功能 结合脚
  • 最快方式 ESP-IDF 创建例子 教程

    需要条件 安装了 VSCODE 安装了插件 Espressif IDF工具 系统中安装了 ESP IDF 可使用离线包 或在线安装包 在插件中配置了 ESP IDF 可能需要在线更新一些东西 点击F1 输入 ESP 等待提示 出现提示后 选
  • VSCode 插件安装:中文(简体)语言包(附带:不生效解决方案)

    文章目录 VSCode 安装插件 中文 简体 语言包 中文语言包不生效解决方案 打开 命令面板 配置显示语言 选择中文 重启VSCode 效果 中文界面 VSCode 安装插件 中文 简体 语言包 插件市场搜索 中文 选择如下插件安装 Ch
  • Ubuntu20.04中VSCode配置C++以及分文件编写配置

    网上搜索了很多文章 一直显示找不到自定义的头文件 今天总算捣鼓出来了 参考文章 https www cnblogs com icmzn p 16244665 html https blog csdn net qq 39048131 arti
  • vscode远程连接失败解决方案

    vscode远程连接在更新了配置文件或者密钥信息更新后可能会出现远程连接失败 过程试图写入的管道不存在 该问题的主要有以下三种解决方案 1 在vscode SSH扩展设置中配置config文件的绝对位置 该文件一般位于 ssh文件夹中 C
  • 使用vscode编辑和提交github仓库代码

    写在前面 在github上想删除仓库中的某个文件或文件夹 亦或是重命名操作都很麻烦 这里提供一种vscode的解决方案 在vscode中克隆远程github仓库 然后对代码或文件进行编辑 最后提交即可 就和管理本地文件一样方便 准备工作 下
  • Vscode连接远程服务器(一套配置成功)

    安装远程开发插件Remote Development 1 在商店中搜索Remote Development并安装 2 添加服务器连接配置 点击该选项卡 会进入SSH TARGETS的添加 如下图所示 填写配置信息可在下边操作中查看 修改 想
  • VScode配置文档

    vscode配置 常用插件 View In Browser 预览页面 ctrl F1 vscode icons 侧栏的图标 对于一个有视觉强迫症的人是必须要的 HTML Snippets 支持HTML5的标签提示 JS CSS HTML F
  • vscode配置clangd和clang-format

    vscode安装和配置 如何安装和配置vscode以搭建c 开发环境 可以查看我的另一篇博客 Windows上最轻量的vscode C 开发环境搭建 在这篇博客中 详细介绍了如何安装vscode以及应该安装哪些插件 这里不再赘述 vscod
  • 钱越来越难挣?这期程序员兼职干货没有水分!

    钱越来越难挣 程序员找兼职越来越难 结局只能指路美团 文末福利 还没看透职场 高薪 骗局 别人早就把精力放在了做副业上 兼职找不到 多半是经验不够 思路没打开 本篇文章 应该能让你茅塞顿开 收获颇丰 先喝点水 干货满满 下面容我娓娓道来 一
  • VSCode中如何查看EDI报文?

    VSCode是开发人员常用的一款软件 为了降低EDI报文的阅读门槛 知行的开发人员设计了EDI插件 可以在VSCode中下载使用 如何打开一个EDI报文 VSCode EDI插件介绍 EDI插件下载流程 进入VSCode 打开Extensi
  • vscode 内置(自带)功能使用

    vscode 搜索 功能 使用正则表达式 参考文章 Justice23 参考文章 熟悉的新风景 转义字符 匹配内容 t tab r 回车符号 r n 换行符号 n 特殊符号转义 如

随机推荐

  • 二叉树递归遍历(C语言实现)

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • n&(1<<i)用法

    1 lt lt i 是将1左移i位 xff0c 即第i位为1 xff0c 其余位为0 xff1b 例如1 lt lt 2 则0001 gt 0100 n amp 1 lt lt i 是将左移i位的1与n进行按位与 xff0c 即为保留n的第
  • C++如何将数字常量转换为字符串

    头文件 xff1a include lt string gt 功能 xff1a 将数字常量转换为字符串 参数 xff1a value 返回值 xff1a 转换好的字符串 定义于头文件 std string to string int val
  • 动态数组(C语言)

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • STM32使用串口空闲中断接收不定长数据帧-USART_IT_IDLE使用(不使用DMA方式)

    STM32使用串口空闲中断接收不定长数据帧 USART IT IDLE使用 xff08 不使用DMA方式 xff09 前言串口空闲中断介绍清中断方法串口中断处理函数串口中断用到的全局变量定义串口初始化 xff08 使能接收中断 空闲中断 x
  • C语言编程规范

    一 头文件编程规范 三大原则 设计层面 xff1a 1 头文件中适合放置接口声明 xff0c 不适合放实现 2 头文件职责单一 3 头文件应向稳定的方向包含 八项规则 编码层面 xff1a 1 只能通过包含头文件的方式使用其他模块提供的接口
  • struct2数据传输格式错误

    n incompatible version 1 1 14 of the APR based Apache Tomcat Native library is installed while Tomcat requires version 1
  • 简单自定义协议的封包和解包

    简单自定义协议的封包和解包 一 通信协议1 百度百科的解释2 过于简单的通信协议引发的问题3 通信协议常见内容1 帧头2 设备地址 类型3 命令 指令4 命令类型 功能码5 数据长度6 数据7 帧尾8 校验码 4 通信协议代码实现 xff0
  • 如何计算C语言中结构体的大小:结构体内存对齐

    结构体的对齐规则 xff1a 1 第一个成员在与结构体变量偏移量为0的地址处 2 其他成员变量要对齐到某个数字 xff08 对齐数 xff09 的整数倍的地址处 xff08 对齐数 61 编译器默认的一个对齐数 与 该成员大小的较小值 xf
  • C语言实现大小端转换

    C语言实现大小端转换 xff1a 大端模式 xff1a 数据的高字节保存在内存的低地址中 xff0c 而数据的低字节保存在内存的高地址中 数字999 换算成补码就是 xff1a 0000 0011 1110 0111 xff0c 大端存储模
  • Flask全局拦截器&局部拦截器

    拦截器 在开发网站时 xff0c 不同路由下有可能需要做一些重复的判断 例如购物网站中管理员想要获取所有订单的信息 xff0c 需要首先判断管理员是否登录 xff0c 如果没有登录肯定是没有权限的 同理 xff0c 管理员的其他操作同样需要
  • C struct 简单实现 class

    以车为对象 xff0c 用C来写C 43 43 的class车 在C中没有类 xff0c 所以用struct来代替 xff0c 而class中对应的类对象函数就用函数指针来代替 span class token keyword typede
  • 2019年全国大学生电子设计竞赛综合测评题解析

    2019年全国大学生电子设计竞赛综合测评题解析 题目如下 xff0c 设计制作电路产生下列四路信号 xff1a 1 频率为19kHz 21kHz连续可调的方波脉冲信号 xff0c 幅度不小于3 2V xff1b 2 与方波同频率的正弦波信号
  • char转string

    在平常做算法题的时候 xff0c 经常会碰到遍历字符串 xff0c 然后将在将目前遍历的子串与已经遍历过的进行其他操作时 xff0c 我们需要将子串由char类型转换为string类型 以下是几种简单的方法 1 使用赋值 61 includ
  • 进程和线程、单线程、多线程和多进程

    欢迎学习交流 xff01 xff01 xff01 持续更新中 文章目录 进程和线程理论知识二者区别 单线程和多线程多线程和多进程 进程和线程 由于理论概念难以理解 xff0c 我在查资料的过程中经常能看到这样一个形象的比喻 xff1a 进程
  • Linux下TCP、UDP、UDP广播通信代码及运行

    一 网络环境配置 网络通信方式可选择一台主机里的两个虚拟机 xff0c 也可以两台主机里的两个虚拟机 xff0c 本文采用方式二 主机一IP地址为192 168 1 109 主机二IP地址为192 168 1 24 必须使两台主机在一个网段
  • 8086/8088CPU内部结构,引脚图,物理地址与逻辑地址

    文章目录 第2章 80X86微处理器的工作原理2 1 80x86处理器2 2 8086 8088微处理器2 2 1 8086 8088微处理器的内部结构2 2 2 8086 8088微处理器的寄存器 2 3 8086 8088微处理器总线功
  • 《强化学习周刊》第11期:强化学习应用之模拟到真实

    No 11 智源社区 强化学习组 强 化 学 习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一 xff0c 它在模拟到真实领域中的应用研究进展与成果也引发了众多关注 为帮助研究与工程人员了解该领域的相关进展和资讯
  • 【基于GCC】STM32的printf函数重定向

    重定向c库函数printf到串口 添加 write函数 在keil借助的是fputc函数 xff0c 而gcc用fputc就不行了 xff0c 需要用 write函数 xff0c 函数原型如下 xff1a int write span cl
  • VSCode使用Clangd

    前言 在使用微软的C C 43 43 插件时 xff0c 遇到较大项目时 xff0c 代码提示速度非常的慢 xff0c 这时可以使用clangd 1 系统安装clangd 版本选择 xff1a Linux github仓库 https gi