OpenHarmony编译构建系统)—介绍新增组件以及组件模块开发

2023年 7月 17日 19.8k 0

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

前言

本文介绍了编译构建系统的使用,新增组件的步骤,组件模块开发的方法。

新增组件

准备好开发套件。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

一、编写组件源码

在applicationssample目录下新建component_demo目录。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

之后在component_demo目录下新建demo.c文件。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

开始编写… 保存文件。

ps: 源码各部分组成简介可以看我的另一篇文章 https://ost.51cto.com/posts/25049。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

二、编写编译脚本

在component_demo目录下新建BUILD.gn文件。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

开始编写编译脚本… 保存文件。

  • ps1: static_library是静态库 testdemo是库名称,最终会被编译成libtestdemo.a。
  • ps2: sources 指定要编译的demo.c源文件。
  • ps3: include_dirs是指定的include目录 "//"表示源码根目录,后面是目录名称。
  • ps4: 注意逗号。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

三、单独编译目标

打开虚拟机,找到1.1.3源码根目录,选择在终端打开。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

查看具体用法。

hb build -h

ps:语法是 hb build -T 路径 : 目标。

hb build -f -T //applications/sample/component_demo:testdemo

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

四、添加组件定义

回到VSCode 根据路径 buildlitecomponentsapplications.json 打开applications.json。

定义组件,保存文件。

ps1: targets是编译入口 是源码根目录下的applications/sample/component_demo:testdemo。

ps2: adapted_kernel是适配内核。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

五、将组件配置到产品

根据路径 vendorhisiliconhispark_pegasusconfig.json 打开config.json 找到 “subsystem”: “applications” 进行配置,保存文件。

  • ps: 注意逗号。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

单独编译组件。

hb build -f testdemo

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

  • ps:在轻量系统中,单独编译的目标或组件,不能独立运行,适合发现编译错误。

烧录运行的话,需要进行固件的全量编译。

hb build -f

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

六、烧录固件

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

七、运行

烧录完成之后,打开MobaXterm,连接串口,重启开发板。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

组件模块开发

一、建立根目录

根据路径 applicationssamplewifi-iotapp 找到app目录 新建gn_practice目录。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

二、建立目录树

  • 应用程序模块: application
  • 驱动模块: driver
  • 库模块: library

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

三、编写各模块源码

  • ps:每写完一个文件记得保存。

先是application模块,建立一个子模块的c文件和头文件。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

子模块的c文件include对应的头文件。

  • ps: 爆红只需要点击黄色小灯泡,添加到includePath即可 不会添加的可以看我的上一篇文章。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

新建一个主程序文件。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

编写主程序文件。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

接下来是driver模块和library模块。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

在主程序文件include两个模块的头文件。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

四、编写各模块脚本

先编写application模块脚本。

  • ps: cflags是编译参数 这三种情况在默认编译方式下是不允许的,会引发编译错误,设置这三个参数后,编译系统会把它们不当作错误来处理。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

接下来编写driver和library模块。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

五、定位组件编译入口

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

applicationssamplewifi-iotappBUILD.gn。

修改三个模块的编译。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

六、编译烧录运行

设置:

hb set

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

编译:

hb build -f

编译成功。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

烧录成功。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

运行成功。

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论