VScode 中 Clangd 使用

2023-05-16

1、VScode 中 Clangd 使用

VScode 中 Clangd 优缺点

优点
占用系统资源确实比 C/C++ 少了很多,无论是 CPU 还是 内存的使用。(最重要)

缺点
操作相较于 C/C++ 确实也繁琐一点。

总结一下,就是对于大型项目来说,使用 clangd 能够明显降低系统资源的占用,能够减少出现系统卡顿的情况,不过使用门槛较高。C/C++ 更适合小项目的开发,使用起来更加便利,能够更好的进行调试。

2、VScode 中 Clangd 使用

  • Linux 下 clangd 安装

操作系统为 ubuntu20.04

官网说明地址: Getting started

在系统的源里面,并被有找到 clangd13 的软件,安装 12 版本需要降级 gcc 。遂采用直接下载可执行的方式进行

拷贝到环境变量所在的路径的方式。

  1. 通过官方 github 官方 13 地址下载 zip 包。解压后,文件夹如下

在这里插入图片描述

  1. 将 bin目录下,拷贝至 /usr/local/bin。将 lib 目录下,拷贝至
    /usr/local/lib。具体路径可以根据环境变量自由选择。

  2. 检查是否已经安装成功。终端内敲击 clangd --version 出现类似内容,即代表安装成功。
    在这里插入图片描述

3、VScode 下 clangd 插件安装

在应用市场中,直接搜索 clangd 安装即可。
在这里插入图片描述

clangd 如果没有指定 compile_commands.json 位置,会在工程路径下进行查找,如需单独指定可以添加以下配置项 --compile-commands-dir=${workspaceFolder}/build/
在这里插入图片描述

compile_commands.json 文件生成

直接借用了下这位大佬的博客 compile_commands.json 文件生成 随时联系,可以删除。

compile_commands.json 文件能够有效提高一些工具(比如说ccls1, vscode2)的代码跳转、补全等功能。 因此,本文将会说明如何生成 compile_commands.json 文件,特别是使用 makefile 的老工程。

cmake工程

方法1、cmake工程生成 compile_commands.json 文件比较简单,定义 CMAKE_EXPORT_COMPILE_COMMANDS 即可。

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1

方法2、在CMakeLists.txt中添加 set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 也可以达到上面的效果。

makefile工程

不过很多(旧的)工程都是用 makefile 来编译的,没有现成的选项生成 compile_commands.json 文件。 虽然也可以使用 ctags, gtags 等,但是跳转其实不是很准确。 我们可以通过 Bear 来生成,而且不需要改动代码。 具体Bear的安装这里就不赘述了,按照 官方文档 来即可。 安装之后,执行以下命令即可生成:
安装bear命令:

sudo apt install bear

生成compile_commands.json文件

bear 编译命令 # 比如说 bear make

也就是在原有编译命令之前加上 bear 即可,一般都是 bear make 。 生成之后我们就可以愉快地享受更精准的跳转和补全了。😊 ✌️

其中compile_commands.json文件中的部分内容为:

[
    {
        "arguments": [
            "gcc",
            "-c",
            "-I./include",
            "-o",
            "test",
            "test2.c"
        ],
        "directory": "/home/zhaokaiyue/Desktop/test",
        "file": "test2.c"
    },
    {
        "arguments": [
            "gcc",
            "-c",
            "-I./include",
            "-o",
            "test",
            "main.c"
        ],
        "directory": "/home/zhaokaiyue/Desktop/test",
        "file": "main.c"
    }
]

记录的是编译的参数和路径、名称等等

非原编译环境调整

有的时候不同模块使用的编译环境是不同的,但是想在同一开发机上编码? 其中一种方法是远程开发(比如说vscode remote3),另外一种就是使用 docker 。 代码checkout在同一台开发机,不同编译环境对应不同docker镜像,代码以volume挂载。 这样可以避免编译的交叉影响,省去代码的同步以及日后编译机的裁撤。

不过编译环境的库依赖可能会冲突,所以在开发机上需要存放到不同的目录。 因此生成的 compile_commands.json 文件中的路径需要调整。 我们先通过 -o 选项生成一个备份文件:

bear --append -o compile_commands_org.json 编译命令

4、github release文件下载

1、在下载clangd文件过程中是在github的release文件上,使用安装是比较缓慢的,因此提供如下方式通过代理的方式进行下载:

github下载release文件:https://d.serctl.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VScode 中 Clangd 使用 的相关文章

  • Linux 以root用户登录无法启动VSCode

    Linux 以root用户登录无法启动VSCode 环境 Ubuntu18 04 VSCode 复现 以root用户登录Ubuntu后单机VSCode图标打开VSCode BUG 无法打开VSCode 原因 VSCode默认不允许以root
  • 在 vscode 上刷力扣 Leetcode 可以这样来

    背景 神奇的算法网站 LeetCode 值得驻留 网页版似乎不太方便 作为习惯于在编译器上敲代码的你 如何 vscode 上优雅的刷力扣 Leetcode 在本地配置 记录下来方便备查 环境前置 电脑具备 NodeJs环境 第一步 安装插件
  • 【VSCode】推荐一款Microsoft Visual Studio Code能在编辑器内智能补全代码的插件 - Tabnine AI

    Tabnine AI Autocomplete for Javascript Python Typescript PHP Go Java Ruby more Tabnine是一个AI代码补全插件 支持JavaScript Python Ja
  • VsCode 常用好用插件/配置+开发Vue 必装的插件

    一 VsCode 常用好用插件 1 实时刷新网页的插件 LiveServer 2 open in browser 支持快捷键与鼠标右键快速在浏览器中打开html文件 支持自定义打开指定的浏览器 包括 Firefox Chrome Opera
  • VSCode如何设置终端工作目录

    文章目录 前言 固定工作目录 Terminal Here 注意 前言 相信大家在使用VSCode的时候 都会有如下难受的感觉 每次打开终端的时候工作目录都是用户目录 如果要执行命令还得cd到当前文件夹 十分麻烦 为了提高工作效率 有必要设置
  • Win10环境下配置VScode远程开发ssh-remote(免密登录)

    问题背景 在开发或者做实验的过程中 我们经常会用到远程服务器或者Github的项目 而我服务器上的项目只能在Jupyter Notebook上编写 或许可以在其他IDE上写 但我不知道 而我们喜欢用的IDE比如Pycharm 轻量级的VSc
  • win10使用vscode+anaconda+Python环境配置(解决无法加载文件 \WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本)

    win10使用vscode anaconda Python环境配置 解决无法加载文件 WindowsPowerShell profile ps1 因为在此系统上禁止运行脚本 安装anaconda 为conda设置环境变量 conda 环境初
  • vscode cmake 编译32位程序

    vscode cmake 编译32位程序 为什么要用cmake vscode中的C C 插件直接支持的只是最简单的单文件编译 运行和调试 要管理大的项目 或者生成库 C C 插件不能直接支持 需要开发者利用vscode的task功能 结合脚
  • 最快方式 ESP-IDF 创建例子 教程

    需要条件 安装了 VSCODE 安装了插件 Espressif IDF工具 系统中安装了 ESP IDF 可使用离线包 或在线安装包 在插件中配置了 ESP IDF 可能需要在线更新一些东西 点击F1 输入 ESP 等待提示 出现提示后 选
  • 使用vscode编辑和提交github仓库代码

    写在前面 在github上想删除仓库中的某个文件或文件夹 亦或是重命名操作都很麻烦 这里提供一种vscode的解决方案 在vscode中克隆远程github仓库 然后对代码或文件进行编辑 最后提交即可 就和管理本地文件一样方便 准备工作 下
  • vscode实现文件单步调试保姆级教程

    第一步 第二步 第三步 第四步 第五步 第六步 第七步 第八步 第九步 第十步 点击终端 gt 配置任务 第十一步 第十二步 第十三步 第十四步 设置完毕 可以在源程序打断点按F5执行了
  • 中国太阳能热水器市场营销模式探析与品牌格局调研报告2022版

    中国太阳能热水器市场营销模式探析与品牌格局调研报告2022版 HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年11月 搜索鸿晟信合研究院查看官网更多内容 第一章 太阳能热水器相关概述 1 1 太阳
  • vscode的Document This插件

    Document This插件 主要针对JavaScript 和 TypeScript 语言生成注释 光标放在函数名上 连续按 两下 Ctrl Alt D description param number x param number y
  • python利用bs4获取网络小说

    所选定的小说网址 https www shicimingju com book xiyouji html 如果想更换其他小说资源 在上一级网址就行 https www shicimingju com book 代码如下 from bs4 i
  • VSCode设置中文

    https www somode com softjc 30980 html
  • nodejs+vue+elementui电子数码产品商城推荐系统vscode毕业设计

    基于vue的电子产品推荐系统分为前台和后台两部 前台部分主要是让用户购买和查看商品使用的 后台主要是让管理员人员发布商品相关信息和管理订单使用的 前台部分包括用户注册登录 查看商品相关信息 查看公告信息 查看热卖产品 查看精品产品 将商品加
  • VSCode中如何查看EDI报文?

    VSCode是开发人员常用的一款软件 为了降低EDI报文的阅读门槛 知行的开发人员设计了EDI插件 可以在VSCode中下载使用 如何打开一个EDI报文 VSCode EDI插件介绍 EDI插件下载流程 进入VSCode 打开Extensi
  • VScode配置mingw C语言环境变量

    C语言IDE VScode VScode是个人比较喜欢的一款IDE软件 鄙人曾同时在VScode软件中运行三个终端 开发Python Golang和C语言 下载地址如下 code visualstudio com VScode配置mingw
  • 无法使用clangd读取linux内核代码

    我有一些关于Linux内核驱动程序的代码 我用熊使生成compile commands json 这是我的一些compile commands json directory usr src linux headers 5 4 0 90 ge
  • vscode插件离线安装地址

    因内网开发 编辑器不可联网 插件需要离线安装 vscode插件商店 Extensions for Visual Studio family of products Visual Studio Marketplace

随机推荐

  • 操作系统实验——进程管理与进程通信

    广州大学学生实验报告 实验一 进程管理与进程通信 一 实验目的 1 掌握进程的概念 xff0c 明确进程的含义 2 认识并了解进程并发执行的实质 xff0c 进程的阻塞与唤醒 xff0c 终止与退出的过程 3 熟悉进程的睡眠 同步 撤消等进
  • 关于FreeRTOS的vTaskDelayUntil()延时函数的理解

    关于任务操作的相关函数走读 函数vTaskDelayUntil if INCLUDE vTaskDelayUntil 61 61 1 参数pxPreviousWakeTime xff1a 上一次任务唤醒时间点 xff0c 任务中第一次调用该
  • 关于FreeRTOS的系统时钟节拍

    不管是什么系统 xff0c 运行都需要有个系统时钟节拍 xTickCount就是FreeRTOS的系统时钟节拍器 在每个滴答定时器中断中xTickCount 43 1 xff0c 比如stm32中 xff0c 具体是在delay c中的vo
  • python基础:for循环和while循环区别和相同点,range函数介绍

    循环语句可以让计算机重复和自动的执行代码 xff0c 减少人的工作量 文章目录 for循环while循环两种循环对比 for循环 格式 for in 循环语句 xff0c 简称for循环 xff1b 先看下它的格式吧 span class
  • 不忘初心•砥砺前行——江苏叁拾柒号仓智能科技有限公司2019年中总结会

    2019年7月20日上午 xff0c 江苏叁拾柒号仓智能科技有限公司 下称37号仓 2019年中总结会在集团1楼多媒体厅隆重举行 xff0c 37号仓执行董事魏标 xff0c 总经理卞石磊 xff0c 子雨集团党支部书记 工会主席徐伟 xf
  • python基础:布尔运算和四个语句

    布尔运算 计算机的逻辑判断 xff0c 只有True 判断为真 和alse 判断为假 两种结果 xff0c 计算真假的过程就叫做布尔运算 xff0c True和False就是布尔值 while和if中的布尔运算 相同点 xff1a 在whi
  • 解读编码和文件读写

    解读编码和文件读写 编码的本质就是让只认识0和1的计算机 xff0c 能够理解我们人类使用的语言符号 xff0c 并且将数据转换为二进制进行存储和传输 这种从人类语言到计算机语言转换的形式 xff0c 就叫做编码表 xff0c 它让人类语言
  • BeautifulSoup库的简单使用

    BeautifulSoup是什么 网页解析库BeautifulSoup xff0c 用来解析和提取网页中的数据 安装BeautifulSoup库 BeautifulSoup库目前已经进阶到第4版 xff08 Beautiful Soup 4
  • 运行地面站详细步骤

    第一步 xff1a 打开bin目录 xff0c 保留Backup DLL文件夹 xff0c 删除除Backup DLL文件夹之外的所有文件 xff1b 第二步 xff1a 打开Backup DLL文件夹 xff0c 复制里面所有的dll 粘
  • 关于qt和js的html一些修改

    1 调试打印js文件 maptype tms html 文件 xff0c 没有qdebug 和printf 可以用 xff0c 但可以用alert 来代替 xff0c 用alert 地图上会出现对应窗口显示 xff0c 来判断程序 逻辑 2
  • qt+directshow usb摄像头及音频设备录制视频

    最近来了个项目 xff0c 有一块功能是usb摄像头录制视频并且录音的实现 xff0c 网上的东西七七八八什么技术都有 xff0c 先用opencv打了半天环境不能录音频 xff0c 后来用ffmpeg xff0c 原谅我太菜 xff0c
  • VSCode中Git解决冲突的步骤

    VSCode中Git解决冲突的步骤 1 gt gt 合并分支后 如果存在冲突 右下角会出现一个提示框 提示 存在合并冲突 请在提交之前解决这些冲突 2 gt gt 左边导航第三个图标中 xff0c 找到产生冲突的文件 3 gt gt 打开文
  • VsCode一定要安装的几个插件

    1 Vetur VUE语法高亮 智能感知 Emmet等 xff0c 包含格式化功能 xff0c Alt 43 Shift 43 F xff08 格式化全文 xff09 xff0c Ctrl 43 K Ctrl 43 F xff08 格式化选
  • ccm-slam环境配置

    ccm slam 配置过程记录 介绍 xff1a 一种协同视觉slam方法 传统的slam是一个机器人完成定位与建图的任务 xff0c 但对于大范围的环境 xff0c 多机器人协同建图往往能提高效率 xff0c ccm slam就是基于这个
  • 从大到小排序,Comparator类型

    import java util Arrays import java util Comparator public class Main public static void main String args 注意 xff0c 要想改变默
  • 11种服务器编程语言对比(附游戏服务器框架) 2020.06

    各语言对比 语言版本TIOBE排名垃圾回收类型系统性能Web后端非Web后端特性Java142是中Python3 83是动态低C 43 43 174高不适合Node js147 是动态低PHP7 48是动态低不适合Go1 1412是中Rub
  • 【stm32定时器配置步骤和相关概念解析——LL库】

    系列文章目录 文章目录 系列文章目录前言一 cubeMX定时器介绍二 通用寄存器三 PWM模式四 LL库 PWM模式 xff08 定时器14为例 xff09 1 结构体说明2 LL库代码 前言 一 cubeMX定时器介绍 Slave Mod
  • 华为MateBook&暗影精灵游戏本恢复出厂设置

    总目录 文章目录 总目录前言一 华为MateBook恢复出厂设置1 接上电源2 重启 开机按F10 二 暗影精灵游戏本恢复出厂设置1 接上电源2 重启 开机按F11 前言 记一次个人华为笔记本和暗影精灵游戏本的恢复操作 xff0c 说不准下
  • C/C++类库大全(附github连接)

    C 43 43 资源大全中文版 浏览中发现一篇总结的很全的c c 43 43 类库 xff0c 在此做记录 xff0c 以备不时之需 github地址 xff08 内有各个库的源码连接 xff09 https github com jobb
  • VScode 中 Clangd 使用

    1 VScode 中 Clangd 使用 VScode 中 Clangd 优缺点 优点 占用系统资源确实比 C C 43 43 少了很多 xff0c 无论是 CPU 还是 内存的使用 xff08 最重要 xff09 缺点 操作相较于 C C