vscode配置c++代码跳转demo

联系作者:私信 或者 个人主页

1. c++代码跳转的前提

c++代码中,我们需要关注头文件搜索路径编译时打开了哪些宏这些宏在编译时的赋值,有这些输入才能准确地知道当前代码的编译环境,才能准确跳转到对应的头文件,才能正确显示这些宏开关。

c++中这类配置文件被称为编译数据库,即compile_commands.json。该json中的每一项详细描述了一个源文件(.c或者.cpp)如何被编译,包括头文件的搜索路径、搜索顺序、宏是否打开。

普通工程如何生成compile_commands.json?

传统的c/c++工程使用的是Makefile编译,可以搭配Linux下的bear命令,将make作为输入,即可得到编译数据库。

2. vscode使用compile_commands.json进行索引

vscode使用的是LSP(language server protocol)架构,后端使用的是clangd server,前端使用clangd插件,另外还需要vscode配置用于连接前后端。

参考资料:

  1. clangd download
  2. llvm-vs-code-extensions.vscode-clangd

vscode_plugin_clangd

3. 举个例子

下面以ffmpeg-7.0编译,配置c/c++代码跳转环境举例:

下载ffmpeg-7.0源码:ffmpeg-7.0 download

解压:

$ tar -xvf ffmpeg-7.0.tar.xz

configure:

ffmpeg-7.0$ ./configure --prefix=/data/code/demo/ffmpeg/ffmpeg-7.0/install --disable-x86asm

编译安装:

ffmpeg-7.0$ sudo apt install bear
ffmpeg-7.0$ bear make -j$(nproc) && make install -j$(nproc)

这时在ffmpeg-7.0目录下就得到了compile_commands.json文件。

vscode配置

ffmpeg-7.0目录下新建.vscode目录,在.vscode目录下新建settings.json文件,注意这个配置文件只对当前工程生效,settings.json中输入以下内容:

{
    "clangd.arguments": [
        "--background-index",
        "--compile-commands-dir=${workspaceFolder}/.vscode",
        "-j=4",
        "--query-driver=/usr/bin/clang++",
        "--clang-tidy",
        "--clang-tidy-checks=performance-*,bugprone-*",
        "--all-scopes-completion",
        "--completion-style=detailed",
        "--header-insertion=iwyu",
        "--pch-storage=disk",
    ],
    "clangd.path": "/home/ubuntu/.local/clangd_17.0.3/bin/clangd"
}

配置解释:

  1. –compile-commands-dir:用于指定compile_commands.json文件所在的目录,一般拷贝到.vscode目录防止误删
  2. -j:clangd索引时同时使用的最大线程数
  3. –query-driver:指定clang++位置
  4. clangd.path:配置clangd位置

最后需要重启vscode或者ctrl + shift + p输入clangd: Restart language server命令,触发vscode进行索引,索引使用的文件生成在.vscode/.cache目录。

这样c++代码跳转就配置好咯~

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值