clangd配置

更新

  • 日期:
    2024年7月27日
    时间:
    北京时间:15:30

背景

  • 饱受c/c++摧残,实在无法忍受,换做比较高级的跳转工具clangd,大工程基本上都选用clangd,算是很好的背书。

环境

  • 环境:vscode ubuntu

关键词:clangd, ubuntu,bear,settings.json,compile_commands.json

一.优缺点对比

tools优点缺点
c/c++无需配置速度比较慢,偶尔突然不能用
clangd响应速度快,不会失灵使用需要手动配置settings.json。跳转依赖compile_commands.json

二.下载

官方下载:有各种平台下载clangd

ubuntu or vscode github任选其一即可:

1. ubuntu download clangd

sudo apt-get install clangd-12

2. vscode download clangd

Ctrl + Shift + P 打开搜索框 clangd即可下载,速度比较慢、容易下载失败。

vscode默认下载path:~/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/bin/clangd
download clangd

3. github download clangd

clangd

三.配置

不管怎么下载、什么下载方式。无非有的人喜欢最新版本的功能更好,有的人喜欢老版本稳定。主要是配置使用

  • 如何找到clangd工具和clangd参数配置,就依赖settings.json文件。
  • 优先级:工作区settings.json > 全局settings.json
  • 一劳永逸:我就想先在工作区验证settings.json文件是否可用,然后添加到全局,这样岂不是就不会每个工程都要添加一遍settings.json文件了,结果验证确实是个好主意(注意:如果想用全局的需要将工作区.vscode/settings.json 删除全局的才会生效)
    settings.json

1.简易配置:

下面这个配置用于讲解,具体使用参考如下 2.详细配置

{
    "C_Cpp.intelliSenseEngine": "disabled", // 用于关闭c\c++插件的跳转功能和clangd互斥
    "clangd.path": "clangd", 				// clang path 如果已经添加环境变量直接写可执行文件即可
    										// 
    										// 
    "clangd.arguments": [
        "--compile-commands-dir=${workspaceFolder}/bsp/wuqi", // compile_commands.json path
    ],
}

三句话:
第一句:关闭c/c++插件跳转功能

\\用于关闭c\c++插件的跳转功能和clangd互斥
"C_Cpp.intelliSenseEngine": "disabled" 

第二句:让插件知道你的clangd工具绝对路径

// 如果是sudo apt-get install clangd-* 可以使用相对路径,直接填写可执行文件的名字即可(vscode插件下载clangd要使用绝对路径)
// clang path 如果已经添加环境变量直接写可执行文件即可,个别clangd可执行文件叫clangd-10 clangd-12,更改为实际即可
"clangd.path": "clangd"	or 	"clangd.path": "clangd-12"

or

// 填写自己的绝对路径(这里经过测试必须是绝对路径,我使用相对路径clangd无法使用,即使已经添加环境变量)
"clangd.path": "/home/maosql/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/bin/clangd"

第三句

// 告诉工具依赖的compile_commands.json文件位置
"--compile-commands-dir=${workspaceFolder}"

2.详细配置

使用如下配置,需要更改如下路径改为自己的实际路径即可。

  1. “clangd.path”: “----clangd path----”
  2. “–compile-commands-dir=${workspaceFolder}/—path—”
  • 上面两条配置好对于跳转已经可以,第三条默认没有打开。
  • 后续所有操作完再回来打开第三条,跳转功能正常再打开这个,因为个人在刚打开时候导致无法跳转,后来开关几次又可以跳转了,为了不影响验证,最后再打开这个配置
  • 填写自己工具链绝对路径或者相对路径
  1. “–query-driver=riscv64-unknown-elf-gcc” 提高补全和诊断的准确性
{
    "clangd.detectExtensionConflicts": true,
    "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd",
    "editor.formatOnSaveMode": "modifications",
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    "editor.suggest.showSnippets": true,
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true,
    "editor.formatOnType": true,
    "C_Cpp.intelliSenseEngine": "disabled",
    "clangd.path": "/home/maosql/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/18.1.3/clangd_18.1.3/bin/clangd",
    "clangd.arguments": [
        // clangd compilation flags options:
        "--compile-commands-dir=${workspaceFolder}/bsp/wuqi", // compile_commands.json path
        // "--query-driver=riscv64-unknown-elf-gcc",

        // clangd feature options:
        "--all-scopes-completion=true",

        // cope qualifiers
        "--background-index",
        "--background-index-priority=low",
        "--clang-tidy",
        "--completion-style=detailed",
        "--header-insertion=never",
    ],
}

四.使用

因为clangd的使用依赖上面提到的compile_commands.json文件,所以使用上就要生成这个文件,生成这个文件需要bear 工具。

sudo apt-get install bear

生成compile_commands.json文件无非就是在编译前面加bear就可以

  • make
bear make -j32
  • SCons
bear scons -j32

最后一定要打开搜索框clangd 重启一下clangd server或者关闭从新打开vscode,不出意外的话,你已经可以开心快速跳转了,和c/c++使用上是一样的Ctrl+鼠标就ok了。
reset clangd

结语:done!!!

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

maosql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值