clangd下载、配置和使用
- 更新
- 背景
- 环境
- 一.优缺点对比
- 二.下载
- 1. ubuntu download clangd
- 2. vscode download clangd
- 3. github download clangd
- 三.配置
- 1.简易配置:
- 2.详细配置
- 四.使用
- 结语:done!!!
更新
- 日期:
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
3. github download clangd
clangd
三.配置
不管怎么下载、什么下载方式。无非有的人喜欢最新版本的功能更好,有的人喜欢老版本稳定。主要是配置使用
- 如何找到clangd工具和clangd参数配置,就依赖settings.json文件。
- 优先级:工作区settings.json > 全局settings.json
- 一劳永逸:我就想先在工作区验证settings.json文件是否可用,然后添加到全局,这样岂不是就不会每个工程都要添加一遍settings.json文件了,结果验证确实是个好主意(注意:如果想用全局的需要将工作区.vscode/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.详细配置
使用如下配置,需要更改如下路径改为自己的实际路径即可。
- “clangd.path”: “----clangd path----”
- “–compile-commands-dir=${workspaceFolder}/—path—”
- 上面两条配置好对于跳转已经可以,第三条默认没有打开。
- 后续所有操作完再回来打开第三条,跳转功能正常再打开这个,因为个人在刚打开时候导致无法跳转,后来开关几次又可以跳转了,为了不影响验证,最后再打开这个配置
- 填写自己工具链绝对路径或者相对路径
- “–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了。