mac vscode 使用 clangd

C++ 的智能提示 IntelliSense 非常不准,我们可以使用 clangd

clangd 缺点就是配置繁琐,优点就是跳转和提示代码精准

开启 clangd 之后会提示你关闭 IntelliSense

1、安装插件 clangd

搜索第一个下载多的就是

2、配置 clangd 可执行程序路径

clangd 插件依赖 clangd 可执行程序,如果没安装 clangd 可自行百度安装,命令行运行下面命令可以知道自己是否已经安装了 clangd

clangd --version

设置——拓展——clangd

3、配置 vscode 的 setting.json 文件

追加

"clangd.arguments": ["--compile-commands-dir=${workspaceFolder}/build","--background-index","--clang-tidy","--log=verbose","--pretty","--function-arg-placeholders=true","--header-insertion-decorators","--header-insertion=never","--inlay-hints","-j=12"
]

这个配置,不同攻略都大同小异,但是我们要关注一个配置项

--compile-commands-dir=${workspaceFolder}/build

这个表示 clangd 将会在工作区目录(即左侧资源管理器根目录)的 build 目录下寻找 compile_commands.json,即 (下一章讲这个文件获取方式)

vscode 工作区/build/compile_commands.json

4、获取 compile_commands.json 文件

参考

C/C++工程生成编译数据库文件compile_commands.json-CSDN博客

不同的编译方式,使用不同的命令

拿到 compile_commands.json 后,把该文件放在第3章强调的 build 目录下即可,重启 vs code,(随便打开一个 C 文件)会看到下面栏自动生成索引

以及左边资源管理器自动生成 .cache 文件夹

5、特别提示

clangd 跳转准确的来源是 compile_commands.json 文件,里面记录了各个库函数的编译路径,拿到 compile_commands.json 文件后,需要看看里面的目录是不是有问题

比如里面有路径

-I/Users/test/openssl/include/

务必确保

/Users/test/openssl/include/

路径存在且有效,否则影响跳转准确率

像 cmake 是用 include_directories 指令调整头文件路径的,就需要修改 CMakeLists.txt

参考文档

如何配置C/C++补全环境? - 知乎

vscode配置clangd和clang-format_clangd vscode-CSDN博客

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

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

相关文章

react实现步进器

创建一个步进器组件,包含当前步骤(currentStep)的状态以及前进和后退的操作: import React, { useState } from react;function Stepper() {const [currentStep, setCurrentStep] useState(1);const handleNext () > {setCu…

环形链表(C++解法)

题目 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#…

如何能够在发现问题和提问的时候一并带出自己的解决方案

1. 充分理解问题: 在提出问题之前,确保你已经完全理解了问题的本质。从不同的角度分析问题,确保没有遗漏任何重要的信息或者上下文。 2. 进行自我调查和研究: 在向他人寻求帮助之前,尝试自己解决问题。利用网络资源…

【proteus】8086 写一个汇编程序并调试

参考书籍:微机原理与接口技术——基于8086和Proteus仿真(第3版)p103-105,p119-122. 参考程序是p70,例4-1 在上一篇的基础上: 创建项目和汇编文件 写一个汇编程序并编译 双击8086的元件图: …

数据结构和算法——用C语言实现所有排序算法

文章目录 前言排序算法的基本概念内部排序插入排序直接插入排序折半插入排序希尔排序 交换排序冒泡排序快速排序 选择排序简单选择排序堆排序 归并排序基数排序 外部排序多路归并败者树置换——选择排序最佳归并树 前言 本文所有代码均在仓库中,这是一个完整的由纯…

【计算机网络笔记】DNS报文格式

DNS 提供域名到主机IP地址的映射  域名服务的三大要素:  域(Domain)和域名(Domain name): 域指由地 理位置或业务类型而联系在一起的一组计算机构 成。  主机:由域名来标识。域名是由字符和(或&a…

mac安装jenkins

1、安装jenkins之前确认是否安装了homebrew 2、开始安装jenkins 安装完如下图则安装完成 3、不想用默认ip和端口的自己改一下ip和端口 4、启动jenkins brew services restart jenkins 使用自己修改后的ip:port http://0.0.0.0:8088 根据提示信息,拿到管理员密码&…

java - IDEA IDE - 设置字符串断点

文章目录 java - IDEA IDE - 设置字符串断点概述笔记END java - IDEA IDE - 设置字符串断点 概述 IDE环境为IDEA2022.3 在看一段序列化的代码, 想找出报错抛异常那个点, 理解一下代码实现. 因为序列化代码实现在第三方jar包中, 改不了(只读的). 根本数不清第几次才会开始报…

【iOS逆向与安全】某音App直播间自动发666 和 懒人自动看视频

1.目标 由于看直播的时候主播叫我发 666,支持他,我肯定支持他呀,就一直发,可是后来发现太浪费时间了,能不能做一个直播间自动发 666 呢?于是就花了几分钟做了一个。 2.操作环境 越狱iPhone一台 frida m…

10000字!图解机器学习特征工程

文章目录 引言特征工程1.特征类型1.1 结构化 vs 非结构化数据1.2 定量 vs 定性数据 2.数据清洗2.1 数据对齐2.2 缺失值处理 原文链接:https://www.showmeai.tech/article-detail/208 作者:showmeAI 引言 上图为大家熟悉的机器学习建模流程图,…

PHP简单实现预定义钩子和自定义钩子

在PHP中,钩子(Hooks)是一种机制,允许开发人员在特定的时机插入自定义代码。通过使用钩子,开发人员可以在应用程序的特定事件发生时执行自定义的功能或逻辑 钩子有两种类型:预定义钩子和自定义钩子。 预定…

iphone备份后怎么转到新手机,iphone备份在哪里查看

iphone备份会备份哪些东西?iphone可根据需要备份设备数据、应用数据、苹果系统等。根据不同的备份数据,可备份的数据类型不同,有些工具可整机备份,有些工具可单项数据备份。本文会详细讲解苹果手机备份可以备份哪些东西。 一、ip…