OpenHarmony开发者论坛

标题: OpenHarmony中使用clangd进行代码补全 [打印本页]

作者: 深开鸿_李涛    时间: 2024-6-28 17:23
标题: OpenHarmony中使用clangd进行代码补全
[md]## 前言

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

## 1. clangd安装

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

```shell
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文件:

```shell
./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插件:
![](https://forums-obs.openharmony.c ... 3ot2481t9ocf5zf.png)

一些必要的配置如下:

1. 在clangd插件设置里,确保clangd命令的路径正确可用
   
   ![](https://forums-obs.openharmony.c ... sq7p939r7r7k9dk.png)
2. 在clangd插件设置里,确保启用了代码补全
   
   ![](https://forums-obs.openharmony.c ... udo6zrq9x5i9j66.png)
3. 确保生成的compile\_commands.json位于或被链接到vscode项目的根目录下。如果需要放到其他目录,需要修改clangd命令的 `--compile-commands-dir`参数。如:
   ![](https://forums-obs.openharmony.c ... 9dzr3ahr1a1gkv4.png)


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

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

优点:

1. 跳转定义、声明等更快更准确
2. 更丰富的鼠标悬停信息,如常量的值、结构体的大小等
3. 补全时自动添加头文件
4. auto类型推断显示
   
   ![](https://forums-obs.openharmony.c ... 45l5y5evze5w4lr.png)
   
5. ...

缺点:

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

## 总结

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

[/md]
作者: 一天要喝九杯水    时间: 2024-7-2 13:37
命令中多写了end吧
作者: [::::]    时间: 2024-8-21 15:50
标题: OpenHarmony中使用clangd进行代码补全
[md]您好,想咨询一下,像您这么配置过后,仍有头文件找不到的情况,应该要怎么办呢?期待您的回复~
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5