mac vscode 使用 clangd

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

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

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

1、安装插件 clangd

搜索第一个下载多的就是

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

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

复制代码
clangd --version

设置------拓展------clangd

3、配置 vscode 的 setting.json 文件

追加

bash 复制代码
"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博客

相关推荐
j_xxx404_1 小时前
C++算法:哈希表(简介|两数之和|判断是否互为字符重排)
数据结构·c++·算法·leetcode·蓝桥杯·力扣·散列表
脱氧核糖核酸__1 小时前
LeetCode热题100——189.轮转数组(题解+答案+要点)
数据结构·c++·算法·leetcode
coding者在努力2 小时前
被n整除的n位数
c++·算法
赵药师2 小时前
Win11下的VS2022 配置RGBD435i 相机
c++·vs2022·windows11·rgbd435i
量子炒饭大师3 小时前
【C++ 进阶】Cyber霓虹掩体下的代码拟态——【面向对象编程 之 多态】一文带你搞懂C++面向对象编程中的三要素之一————多态!
开发语言·c++·多态
伴我与影3 小时前
【记录】复现论文 Dftpav
c++·docker
Hical_W3 小时前
深入学习CPP17_PMR
c++·学习
计算机安禾4 小时前
【数据结构与算法】第42篇:并查集(Disjoint Set Union)
c语言·数据结构·c++·算法·链表·排序算法·深度优先
苕皮蓝牙土豆5 小时前
Qt图形视图框架入门:坐标系统与鼠标事件处理详解
c++·qt
众少成多积小致巨5 小时前
libbinder_ndk 入门指南
前端·c++·架构