vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目

背景:

最近从Clion切换到了vscode来进行代码开发,发现vscode自带的c/c++插件除了能够使用debug功能,其余代码补全,跳转等功能都和基于clangd的clion有较大差距,经常出现匹配不上或者跳转不准确的问题,在这背景下自己折腾了两天切换到了基于clangd来配置(事实上vim中的youcompleteme也已经基于clangd来实现c/c++的代码的补全

配置方法:

首先在vscode的插件商店中搜索clangd,并安装。

d2b676cdfdc1dc04f83bfd268ef804a4.png

安装完成后,打开一个已有的工程:

如以下是一个最简单的项目:

bdaddddac00a9e25245f4655abfb38d9.png

这里使用CMake来配置项目,事实上可能还存在其他比如bazel,scons,make等项目配置工具:

而clangd是基于compile_commands.json文件来完成对项目的解析,并支持代码补全和跳转。

这里记录一下三种生成方式:

1.在CMakeLists.txt文件中添加set(CMAKE_EXPORT_COMPILECOMMANDS ON),之后cd build && cmake .. ,可以发现在build目录下已经生成了compile_commands.json文件

2.如果是基于make方式来编译,那么可以先安装 pip install compiledb,之后在当前目录下运行(1) compiledb -n make -C build (2) compiledb make -C build 这两个命令中的其中一个来生成compile_commands.json文件,其中前者不会执行真正的make编译命令

3.如果是基于其他方式,可以使用https://github.com/rizsotto/Bear 项目中的方式来生成对应的compile_commands.json文件

通过以上方式生成完后compile_commands.json文件后,可以在vscode中对clangd的参数进行配置,可以使用clangd --help来获取一些有用的参数:下面给出我实际的配置:

6bd891825e5c8a5a4027ca830c7392a4.png

其中第一个是指定配置文件所在目录,第二个是代码补全的时候完全显示函数的参数类型,而第三个则是避免clangd自动引入一些函数依赖的头文件。

在完成以上配置后,就可以愉快的使用clangd进行代码补全了跳转了!

可以看出在下图复杂的工程内部,函数的补全和跳转支持也是十分精准的!

(已知的issue,在和微软的c/c++一起工作时,会提示不正常,因此使用clangd时需要完全关闭c/c++的代码补全等一系列功能,只是将c/c++插件作为debug使用即可)

d297d0afd9542ed654dda80c71408670.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务拆分需要考虑的必要因素与坚持原则

前言:创业公司往往因为有限的时间和投入,把系统所有的功能都聚集在一起。随着业务的不断发展,技术人员开始不断地对架构进行解耦和拆分。微服务在最近几年大行其道,很多公司的研发人员都在考虑微服务架构,或者在做微服…

data后缀文件解码_Java语法进阶13-文件、IO流

FileFile是文件和目录路径名的抽象表示形式,即File类是文件或目录的路径,而不是文件本身,因此File类不能直接访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。File类的对象用来表示文件和文件夹的对…

中小型互联网公司微服务实践-经验和教训

上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来,这篇文章是它的姊妹篇。其实我们在这条路上已经走了一年多,从16年初到现在。在使用Spring Cloud之前我们对微服务实践是没有太多的体会和经验的…

对于机器学习,到底该选择哪种编程语言

开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢?这是一个非常重要的问题。我们在许多论坛上都有讨论过。现在,我可以提供我自己的答案并解释原因,但我们先看一些数据。毕竟,这是机器学习者和数据科学家应该…

android如何适配平板,适用于平板电脑、大屏设备和可折叠设备的自适应布局

将应用支持扩展到更大屏幕的设备(例如平板电脑、可折叠设备和 Chrome 操作系统设备)是扩大您的覆盖面和互动度的绝佳方式。平板电脑的增长率比去年同期 (YOY) 大幅增长了 30%,Chrome 操作系统设备比去年同期增长了 92%。我们还发现,用户使用平板电脑的时…

对于机器学习,到底该选择哪种编程语言?

开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢?这是一个非常重要的问题。我们在许多论坛上都讨论过这个问题。今天,我将给出我自己的答案并解释其中原因,但我们首先看一些数据。毕竟,这是机器学习者和数据…

置顶图片代码加链接html,css图片怎么加链接?

css可以通过在图片前加标签实现为图片加链接,语法:。使用此方法引入图片即可为图片添加链接。设定图片超链接,用css样式来实现,其实就是给这个图片的块添加超链接,我们可以通过在这个块的前面添加一个a标签来实现&…

linux上修改html,linux进程名修改

如何修改 Linux 中的进程名在编写网络服务器程序时,为了响应客户端的请CSS布局HTML小编今天和大家分享,我们经常需要新建进程来处理业务流程;而且又是为了关闭某个非法请CSS布局HTML小编今天和大家分享或者关闭长连接的客户端,这时…

AI 崛起,科学家的天下,程序员的谢幕

一边,在移动互联网时代掉队的微软迅速组织起来了一个万人的 AI 团队。 另一边,Facebook、Google 在对各个技术公司进行买买买,为了在 AI 时代的探索中铺好路。 多年前「深蓝」下国际象棋时,所有人都觉得人工智能还是遥不可及的学…

lammps计算聚合物例子_LAMMPS模拟聚合物结构,非晶态聚合物变形行为的模拟,纳米线变形模拟,单轴张力模拟,晶格参数计算...

推荐一个网站,上面有LAMMPS模拟聚合物结构,非晶态聚合物变形行为的模拟,纳米线变形模拟,单轴张力模拟,晶格参数计算的lammps脚本,如下面是晶格参数计算的lammps脚本,具体网址是:LAMMPS Inputs Archives - LAMMPS Tube​lammpstube…

jenkins 手动执行_Jenkins Git client插件命令执行漏洞(CVE201910392)

0x00 漏洞描述Jenkins发布了官方安全公告:https://jenkins.io/security/advisory/2019-09-12/,Git客户端插件中的系统命令执行漏洞。Git客户端插件接受用户指定的值作为调用的参数,git ls-remote以验证指定URL处是否存在Git存储库。这是以允许具有Job/Co…

怎么把html表复制到word里,怎么把网页表格复制到word

在互联网时代我们经常要在网页中找资料,文字进行复制粘贴调整格式还好,但是有时网页中的表格复制到Word中,表格的边框线全没了,怎么办呢?那么下面就由学习啦小编给大家分享下把网页表格复制到word的技巧,希望能帮助到…

设置maven 参数调休_IDEA 使用 Maven构建Spark项目

上一篇讲了普通构建spark项目 这次分享用Maven构建Spark项目,中间遇到了很多坑!其根本原因是Scala 与 Spark的版本不一致!本次环境:Java1.8Scala 2.11.8Spark spark-2.1.0-bin-hadoop2.6.tgz 新建Maven项目图1.选择顺序图2.随便写…

语音识别现状与工程师必备技能

作者 | 陈孝良 责编 | 胡永波 目前来看,语音识别的精度和速度比较取决于实际应用环境,在安静环境、标准口音、常见词汇上的语音识别率已经超过95%,完全达到了可用状态,这也是当前语音识别比较火热的原因。 随着技术的发展&#xf…

从来不敷面膜的人_女人睡觉前,敷面膜洗还是不洗?很多人都做错了,难怪皮肤总不好...

敷面膜是众多女孩子在晚上都会进行的一个护肤工作,大家都知道像一些明星几乎是每天都要敷一片面膜的,不过她们是因为长期话大浓妆才比较勤,我们一般工作的女孩子大约一周三次就可以了。面膜可以让我们的皮肤迅速吸收水分和营养,这…

智慧气象机器_智慧电缆隧道火热建设中 传感器+机器人成标配

智慧城市是指利用各种信息技术或创新概念,将城市的系统和服务打通、集成,以提升资源运用的效率,优化城市管理和服务,以及改善市民生活质量。它把新一代信息技术充分运用在城市中各行各业基于知识社会下一代创新(创新2.0)的城市信息…

算法代码中的循环矩阵在哪体现_「Machine Learning 学习小结」| 向量在梯度下降算法当中的应用...

写在前面:在之前的文章当中提到过,学习梯度下降算法,可能需要一点点线性代数的知识。在本篇文章当中,我们的讨论就涉及到了向量。笔者也曾提到,不妨把向量看成对数据进行批量操作的一种工具,这样可能对我们…

计算机用户 图片存储位置,手机相册在哪个文件夹,详细教您手机图片存放在哪里...

现在使用手机的用户是越来越多了,手机质量都非常好,因此才会受到许多人的褒奖。不过有用户却遇到了,用手机拍摄了照片或者用手机截图,手机连上电脑后,却在电脑上找不到图片,怎么办,下面&#xf…

揭秘京东文件系统JFS的前世今生,支持双11每秒约10万个对象同时读写

背景 作为一家大规模的自营式电商企业,京东需要存储海量的非结构化数据:商品图片、订单文本、仓库流转记录、App客户端文件、日志文件、内部文档等。对于存储这些数据,之前并没有统一的解决方案,都是各个业务线自行解决——MySQL …

计算机的复数英语怎么读,英语的复数怎么读

目录1.土豆的复数英语怎么读1.英语中的月份的复数 怎么读 读音? months 最后两个辅音,是否可以省略一个。2.在清辅音后,读/s/,如books, 在浊辅音和元音后,读/z/,如dogs,boys 当然。3.名词复数词尾的读音:1)…