OpenHarmony 配置 vscode clangd

通过配置 vscode 的 clangd 插件,可以实现 C++ 代码补全、跳转等功能。需要预先安装 clangd 插件、compdb 工具

以 hihope rk3568 为例,在 openharmony 根目录下创建工程为例

  • 生成编译数据库 compile_commands.json

    命令格式 (在 openharmony 根目录下执行): ./prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C <产品构建路径-t compdb cxx c > <产品构建路径>/compile_commands.json

    ./prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C ./out/rk3568 -t compdb cxx c  > out/rk3568/compile_commands.json

有新增加源文件、修改 BUILD.gn 时,需要重新生成编译数据库

  • vscode 工程 clangd 配置

    修改工程配置, 指定 clangd 路径, 设置产品构建路径

    {
        "clangd.path": "${workspaceFolder}/prebuilts/clang/ohos/linux-x86_64/llvm/bin/clangd",
        "clangd.arguments": [
            "--compile-commands-dir=${workspaceFolder}/out/rk3568",
        ]
    }

其它相关内容请查看
https://gitee.com/xmwvv/ohosdev-note

<think>我们正在一个Linux终端环境中,用户想要用VSCode打开当前目录(/home/openharmony)的代码,但是输入`open`或`vscode`命令都不存在。解决方案:在Linux中,通常可以通过命令行启动VSCode,但需要确保VSCode已安装且其可执行文件在PATH中。常见的VSCode可执行命令是`code`。因此,我们可以尝试使用`code.`来打开当前目录。但是,用户是在一个Docker容器中(根据提示符`root@be912ec293df`判断),容器内可能没有安装VSCode。所以,这里有两种情况:1.如果容器内安装了VSCode,则直接运行`code .`。2.如果容器内没有安装VSCode,那么用户可能需要在宿主机上使用VSCode,并通过挂载的方式编辑容器内的代码。由于用户当前在容器内,且容器内没有`open`和`vscode`命令,我们可以推测容器内没有安装VSCode。因此,正确的做法是:-在宿主机上使用VSCode,并打开宿主机上映射的目录(因为容器内的目录通常是通过卷挂载到宿主机上的)。-或者,在容器内安装VSCode?这通常不推荐,因为容器通常是轻量级的运行环境。但是,用户的问题是在这个终端中如何打开,所以我们需要给出在容器内可行的方案,或者告知用户如何在宿主机上操作。然而,根据问题描述,用户是在Docker容器内,并且当前目录是`/home/openharmony`,这个目录在宿主机上应该是挂载的。所以,用户应该在宿主机上用VSCode打开对应的目录。所以,我们建议用户:1.在宿主机上打开VSCode。2.在VSCode中打开宿主机上映射的`/home/openharmony`目录(即容器中`/home/openharmony`对应的宿主机目录)。但是,如果用户希望在容器内部使用命令行打开VSCode(通过远程连接),那么需要安装VSCode的远程开发套件,并在容器内安装必要的组件(这通常比较复杂)。鉴于问题简单,我们优先推荐第一种方法:在宿主机上操作。因此,回答如下:</think>根据您的操作,您是在Linux终端(Docker容器内)中,想要使用VSCode打开 `/home/openharmony` 目录的代码。以下是解决方案: ### 正确操作步骤 #### 方法1:在宿主机使用VSCode(推荐) 1. **找到宿主机映射目录**: 容器中的 `/home/openharmony` 实际映射到宿主机的某个目录(如 `~/projects/openharmony`) 2. **在宿主机打开VSCode**: ```bash # 在宿主机终端执行(不是容器内): code ~/projects/openharmony # 替换为实际映射路径 ``` #### 方法2:在容器内安装VSCode(不推荐) ```bash # 在容器内执行: wget https://az764295.vo.msecnd.net/stable/.../code-server_4.4.0_amd64.deb dpkg -i code-server_*.deb code-server --auth none --bind-addr 0.0.0.0:8080 ``` 访问 `http://宿主机IP:8080` 使用网页版VSCode #### 方法3:使用VSCode远程容器开发(最佳实践) 1. 在宿主机VSCode安装 **Dev Containers** 扩展 2. 打开命令面板(Ctrl+Shift+P)选择 **Remote-Containers: Attach to Running Container** 3. 选择当前容器 `be912ec293df` 4. VSCode将直接连接到容器内开发环境 --- ### 关键说明 1. **容器限制**: Docker容器默认没有GUI环境,`open` 命令仅适用于macOS,Linux应使用 `xdg-open` 2. **目录映射**: 启动容器时必须挂载目录:`docker run -v /宿主机路径:/容器路径 ...` 3. **权限问题**: 使用 `--user $(id -u):$(id -g)` 避免文件权限问题 --- ### 快速验证命令 ```bash # 尝试在容器内打开(需安装GUI组件): apt update && apt install -y xdg-utils xdg-open . # 可能仍失败,推荐方法1或3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值