前言
在使用微软的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
此时已经设置完成,重启一下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有些库指向有问题,手动添加一下文件路径
 此时在重启一下VSCode,再次打开 main.c 会发现错误消失了
此时在重启一下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",
      ],
}
此时重新打开该项目,头文件就不会再报错了,也支持函数跳转了



















