| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> vscode + clangd 开发 c |c++ -> 正文阅读 |
|
[开发工具]vscode + clangd 开发 c |c++ |
背景vscode c++开大家一般用 vscode 自家出品的c++插件,如下
先不说导航找实现找引用这种语义分析的基本功能有时候都没办法正确找到实现,速度也一般般,错误和警告也只是有提示,没有quick fix功能,这个功能是能极大提高编程手感的东西,非常好用,可惜用不得。 LSP
个人暂时没有去细致了解其中细节,lsp只是一种编辑器和语言服务器(language server)之间的一套协议罢了,编辑器通过lsp将代码传给语言服务器做语义分析,语言服务器在根据lsp传给编辑器做渲染解析或者异常提示之类的。 当然以上只要大概知道lsp是啥就行了。 然后发现c++ 的语言服务器实现lsp,比较常见的就是以下三个。
Clangd看了半天,挑了clangd,代码补全之类的基本的功能就不提了,吸引我的主要是clangd几个特性特别强大,牛逼就完事了。 另外find reference之类的命令明显比cpp tools快的多。 不过主要针对CMAKE管理的项目,因为要生成一个compile_command.json的文件,其他的makefile之类的项目生成这个文件比较麻烦。 quick fix对于一些常用错误,他可以提供快速修改功能,比如漏了命名空间啥的,或者对于一些三方组件没记得太清楚是属性(a.data())还是数据成员(a.data)这种错误,可以提供快速修复方案。 IWYUinclude-what-you-use,又是一个非常给力的一个功能。 有了IWYU,就可以自动添加头文件,这种写代码你就可以专注于业务,减少找头文件切换行include的操作,非常好用。 clang-tidy集成了clang-tidy,基于AST的静态检查工具,提供繁多的检查项,一些常见bug,大小驼峰之类的命名规范,性能提升建议,内容很多,可以自行了解,大部分vscode支持。
不清楚是clangd集成的clang-tidy阉割了还是vscode的问题,不过锦上添花的东西无伤大雅。 环境配置特性了解完了,就开整吧。 插件配置
语言服务器下载ctrl + shift + p 调用 下载安装完完提示重启vscode,没啥需要手动配的,有时候会下载安装失败,多试几次就好。 当然下载官网LLVM全家桶也是可以的。 自定义配置剩下的是一些个人喜好的配置了。 自用配置,看个人喜好,具体语法可以看官网介绍。
生成compile_command.jsonvs的generater 无法生成该文件,换其他的Ninja 之类的gennerater clangd需要根据该文件获取各个文件的include path,以及编译警告错误之类的,必须要有这个文件 如果使用了 cmake tool,可以用以下配置生成。 也可以
又或者在cmakelist里面
都是一样的。 生成的内容大致如下
这样配置下来,,再禁用vs cpptools 的自动补全(补全会冲突),当然你没有debug的需求的话,可以直接删除cpptools。 这样就可以愉快的使用clangd的特性进行开发了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/20 13:22:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |