现在 EIDE 自动生成的 .clangd 配置文件中,系统目录是用 -I 前缀引入的:
CompileFlags:
Add:
- -I/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include/c++/15.2.1
- -I/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include/c++/15.2.1/arm-none-eabi/thumb/v7e-m+fp/hard
- -I/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include/c++/15.2.1/backward
- -I/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/lib/gcc/arm-none-eabi/15.2.1/include
- -I/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/lib/gcc/arm-none-eabi/15.2.1/include-fixed
- -I/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include
Remove: []
CompilationDatabase: ./build/Debug
Compiler: /opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/bin/arm-none-eabi-gcc
这样的话,clangd 会把系统库当作普通的用户头文件进行诊断,产生大量警告和报错,例如:

建议改为使用 -isystem 引入:
CompileFlags:
Add:
- -isystem/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include/c++/15.2.1
- -isystem/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include/c++/15.2.1/arm-none-eabi/thumb/v7e-m+fp/hard
- -isystem/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include/c++/15.2.1/backward
- -isystem/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/lib/gcc/arm-none-eabi/15.2.1/include
- -isystem/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/lib/gcc/arm-none-eabi/15.2.1/include-fixed
- -isystem/opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/arm-none-eabi/include
Remove: []
CompilationDatabase: ./build/Debug
Compiler: /opt/toolchains/arm-gnu-toolchain/arm-none-eabi-15.2/bin/arm-none-eabi-gcc
这样 clangd 就不会再深度检查系统库