目录

  • 安装clangd 后端
  • 安装clangd 前端
  • 修改基础配置
  • 生成compile_commands.json文件
  • 基本效果
    • 补全
    • warning提醒
    • 自动修改存在问题
  • 注意事项

clangd能提供更好的补全和提示,自带检查一些warning的问题,可以减少大家未来找存在的warning的时间。经过配置可以在unittest和timetest中也实现自动补全,平均速度比vscode c/c++插件更快。

安装clangd 后端

sudo apt-get install clangd

安装clangd 前端

在插件市场搜索clangd。安装即可。注意c/c++可以不用卸载,否则调试可能会有点问题。

修改基础配置

  1. 在project folder下建立.vscode文件夹,创建settings.json文件。如下图

  2. settings.json内容如下(注意本地可能需要也配置clangd.arguments否则可能会有问题,陈天浩就有这个问题)

{"files.associations": {"iostream": "cpp","intrinsics.h": "c","ostream": "cpp","vector": "cpp"},// 开启粘贴保存自动格式化"editor.formatOnPaste": true,"editor.formatOnSave": true,"editor.formatOnType": true,"C_Cpp.errorSquiggles": "Disabled","C_Cpp.intelliSenseEngineFallback": "Disabled","C_Cpp.intelliSenseEngine": "Disabled","C_Cpp.autocomplete": "Disabled", // So you don't get autocomplete from both extensions."clangd.path": "/usr/bin/clangd",// Clangd 运行参数(在终端/命令行输入 clangd --help-list-hidden 可查看更多)"clangd.arguments": [// 让 Clangd 生成更详细的日志"--log=verbose",// 输出的 JSON 文件更美观"--pretty",// 全局补全(输入时弹出的建议将会提供 CMakeLists.txt 里配置的所有文件中可能的符号,会自动补充头文件)"--all-scopes-completion",// 建议风格:打包(重载函数只会给出一个建议)// 相反可以设置为detailed"--completion-style=bundled",// 跨文件重命名变量"--cross-file-rename",// 允许补充头文件"--header-insertion=iwyu",// 输入建议中,已包含头文件的项与还未包含头文件的项会以圆点加以区分"--header-insertion-decorators",// 在后台自动分析文件(基于 complie_commands,我们用CMake生成)"--background-index",// 启用 Clang-Tidy 以提供「静态检查」"--clang-tidy",// Clang-Tidy 静态检查的参数,指出按照哪些规则进行静态检查,详情见「与按照官方文档配置好的 VSCode 相比拥有的优势」// 参数后部分的*表示通配符// 在参数前加入-,如-modernize-use-trailing-return-type,将会禁用某一规则"--clang-tidy-checks=cppcoreguidelines-*,performance-*,bugprone-*,portability-*,modernize-*,google-*",// 默认格式化风格: 谷歌开源项目代码指南// "--fallback-style=file",// 同时开启的任务数量"-j=2",// pch优化的位置(memory 或 disk,选择memory会增加内存开销,但会提升性能) 推荐在板子上使用disk"--pch-storage=disk",// 启用这项时,补全函数时,将会给参数提供占位符,键入后按 Tab 可以切换到下一占位符,乃至函数末// 我选择禁用"--function-arg-placeholders=false",// compelie_commands.json 文件的目录位置(相对于工作区,由于 CMake 生成的该文件默认在 build 文件夹中,故设置为 build)"--compile-commands-dir=build"],
}

生成compile_commands.json文件

确保项目能够正常编译的前提下

cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .. -G 'Unix Makefiles'

之后在build目录下就会生成对应的compile_commands.json,格式如下。请务必确保存在compile_commands.json文件,这是clangd补全依赖文件,否则会失效

[
{"directory": "","command": "","file": "",
},
]

生成结束后可能需要手动启动reload window或者使用manually activate extension。之后每次打开project一般会自动开起。


可以通过ps -ef | grep clang查看是否存在进程

基本效果

补全

warning提醒

自动修改存在问题


注意事项

  1. 使用后最好使用下图close remote关闭,否则后台可能有进程未关闭

  1. 进程编译的时候,clangd会自动重新生成缓存,会占用较大的硬盘空间可能需要定时清理

为vscode配置clangd相关推荐

  1. VSCode 配置 C++:VSCode + Clang + Clangd + LLDB + CMake + Git

    2022/5/17:新版教程已发布,点此查看. 2022/5/17:新版教程已发布,点此查看. 2022/5/17:新版教程已发布,点此查看. 2022/2/4:本文章不再予以更新 -1- 前言 ①目 ...

  2. 【转】vscode配置C/C++环境

    转自:vscode配置C/C++环境 - 知乎 VS Code配置 作者:谭九鼎 链接:Visual Studio Code 如何编写运行 C.C++ 程序? - 知乎 有改动.个人按照步骤后,做到复 ...

  3. 【vscode基于clangd实现Android/Linux代码跳转】

    背景: 在开发大型工程例如Android或Linux时若我们使用vscode搭配官方的C/C++插件使用发现,经常很多代码都无法跳转,代码补全功能几乎是废的,通过网友以及同事身边了解之后发现vscod ...

  4. vscode配置记录

    vscode配置记录 按照官网教程安装好vs:实际上只需要配置launch.json的"program"如下所示 "configurations": [{&qu ...

  5. VScode配置anaconda虚拟环境+运行

    文章目录 VScode配置anaconda虚拟环境 VScode配置anaconda虚拟环境 ctrl + shift + P 输入查找 Select Interpreter 在弹出的选项中选中(后缀 ...

  6. 关闭eslint检查2020_2020 vscode配置eslint保存后自动fix

    2020 vscode配置eslint保存后自动fix 这篇文章发布于 2019/10/12,归类于 计算机基础与开发工具 标签: vscode 保存自动fix,vscode 保存执行fix,esli ...

  7. 中setting怎么配置_用VSCode配置Latex

    之前用VScode配置了Latex(原来的配置均从网络汇总),但是换了一台电脑,重新从网上找的配置不太满意,所以把原来的copy过来了,感觉还是原来的顺手呀.就当给自己存个档,顺便留给大家,有需要自取 ...

  8. Jupyter Nodebook添加代码提示(Vscode配置Jupyter Notebook运行.ipynb文件)

    2021.04.14 更新,增加了对Vscode代码提示消失的描述 前言 由于Jupyter Notebook调试Python代码十分方便,受到了许多Coder的欢迎,但是它存在个十分不方便的地方-- ...

  9. anaconda和vscode配置python_vscode配置anaconda3的方法步骤

    注意: 由于博文已经很多这方面的内容,这里不介绍安装vscode和anaconda的步骤,只讨论如下情况: 已经安装了anaconda,也从官网下载了vscode,如何将两者关联起来?(目前anaco ...

最新文章

  1. bootstrap 文件上传fileinput
  2. CentOS6.5Minimal安装Gitlab7.5
  3. hive整合sentry,impala,hue之后权限管理操作
  4. MATLAB从入门到精通系列之如何在MATLAB中导入excel单sheet页及多sheet页表格
  5. 仓库温度湿度控制措施_药品仓库如何保持温湿度均衡?
  6. hive中导入csv,本地CSV导入hive表
  7. mysql中添加中文存储和显示功能
  8. C++ 0x/11学习笔记
  9. matlab财务建模,探讨MATLAB结合EXCEL在财务管理建模中的一个综合运用
  10. Android篮球计分器课程设计,篮球计分器课程设计详解.doc
  11. [Unity3D] DOTween和Curvy插件,以及UI-Extension
  12. 手机和我的私生活有什么必然的联系吗?
  13. CSS中强大的EM(转)
  14. c语言高级成分,高级语言的基本成分数据成分,运算成分,控制成分,传输成分,怎么看它们的类型区别的?比如其中对处理对象的类型说明属于高级语...
  15. 技术人员谈管理之项目风险规避
  16. 基本DOS命令---6.关机重启操作命令
  17. 期货行业首批信创试点单位转型实践|信创专题
  18. 用递归树方法求解递归式
  19. Games101 学习笔记
  20. mysql根据分隔符将一行数据拆分成多行数据

热门文章

  1. swoole 郭新华 - PHP代码加密技术
  2. 技术总监该具备的 道,法,术,器,势【非广告】
  3. Lie群、Lie代数
  4. html5 表单必填项,javascript - HTML5表单必填属性。 设置自定义验证消息?
  5. iPhone白苹果不能开机,怎么办?
  6. linux彻底卸载软件步骤:以卸载wine为例
  7. 11g awr oracle 系列_Oracle 11g AWR 系列七:Active Sessi...-Oracle 11G新特性(共36个)-父子节点问题_169IT.COM...
  8. 微软,谷歌,苹果,Facebook,谁会是下一个XR巨头?
  9. 从“传统电商平台”到“互联网赋能生态”,大家都该学一学!
  10. vbnet 二次开发AutoCAD立体图