积分21 / 贡献0

提问0答案被采纳0文章1

作者动态

    [经验分享] OpenHarmony中使用clangd进行代码补全

    深开鸿_李涛 显示全部楼层 发表于 2024-6-28 17:23:56

    前言

    在OpenHarmony中使用vscode等编辑器进行c++代码开发时,默认c++的代码提示和补全并不好用。通过使用clangd,可以增强代码提示和补全功能,提升编码效率。

    1. clangd安装

    在Ubuntu上可以通过以下命令进行安装:

    sudo apt install clangd

    另外在vscode上也可以通过插件(在下文介绍)来下载clangd。

    2. compile_commands.json生成

    clangd工具进行代码补全需要用到compile_commands.json文件,这个文件中包含了一系列c/cpp文件的编译指令。通常compile_commands.json是由编译构建工具进行生成的。

    目前OpenHarmony的编译脚本 build.sh已经可以通过gn生成compile_commands.json:只需要加上参数 --gn-flags="--export-compile-commands"运行即可。

    如在rk3568上以debug模式编译ets_frontendend_build的同时生成compile_commands.json文件:

    ./build.sh --product-name rk3568 --build-target ets\_frontendend\_build --gn-args is\_debug=true --gn-flags="--export-compile-commands"

    上述命令成功执行后,会在 out/rk3568目录下生成我们所需要的compile_commands.json文件。

    3. vscode插件配置

    vscode上需要安装clangd插件:

    一些必要的配置如下:

    1. 在clangd插件设置里,确保clangd命令的路径正确可用

    2. 在clangd插件设置里,确保启用了代码补全

    3. 确保生成的compile_commands.json位于或被链接到vscode项目的根目录下。如果需要放到其他目录,需要修改clangd命令的 --compile-commands-dir参数。如:

    配置好后,就可以使用clangd进行补全了。

    4. 与微软C/C++插件的体验对比

    优点:

    1. 跳转定义、声明等更快更准确

    2. 更丰富的鼠标悬停信息,如常量的值、结构体的大小等

    3. 补全时自动添加头文件

    4. auto类型推断显示

    5. ...

    缺点:

    1. 若compile_commands.json较大,初次加载时间会比较长
    2. 占用内存更多

    总结

    本文分享了OpenHarmony中配置vscode+clangd进行代码补全的方法。

    ©著作权归作者所有,转载或内容合作请联系作者

    您尚未登录,无法参与评论,登录后可以:
    参与开源共建问题交流
    认同或收藏高质量问答
    获取积分成为开源共建先驱

    精彩评论2

    一天要喝九杯水

    沙发 发表于 2024-7-2 13:37:16
    命令中多写了end吧

    [::::]

    板凳 发表于 2024-8-21 15:50:58

    OpenHarmony中使用clangd进行代码补全

    您好,想咨询一下,像您这么配置过后,仍有头文件找不到的情况,应该要怎么办呢?期待您的回复~

    Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

    返回顶部