【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发 原创 精华

他们都叫我KAI
发布于 2023-7-15 23:29
浏览
1收藏

前言

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

新增组件

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

1.编写组件源码

在applications\sample目录下新建component_demo目录
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
之后在component_demo目录下新建demo.c文件
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
开始编写… 保存文件
ps: 源码各部分组成简介可以看我的另一篇文章 https://ost.51cto.com/posts/25049
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

2.编写编译脚本

在component_demo目录下新建BUILD.gn文件
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
开始编写编译脚本… 保存文件
ps1: static_library是静态库 testdemo是库名称,最终会被编译成libtestdemo.a
ps2: sources 指定要编译的demo.c源文件
ps3: include_dirs是指定的include目录 "//"表示源码根目录,后面是目录名称
ps4: 注意逗号
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

3.单独编译目标

打开虚拟机,找到1.1.3源码根目录,选择在终端打开
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
查看具体用法

hb build -h

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

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

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

4.添加组件定义

回到VSCode 根据路径 build\lite\components\applications.json 打开applications.json
定义组件,保存文件
ps1: targets是编译入口 是源码根目录下的applications/sample/component_demo:testdemo
ps2: adapted_kernel是适配内核
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

5.将组件配置到产品

根据路径 vendor\hisilicon\hispark_pegasus\config.json 打开config.json 找到 “subsystem”: “applications” 进行配置,保存文件
ps: 注意逗号
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
单独编译组件

hb build -f testdemo

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
ps:在轻量系统中,单独编译的目标或组件,不能独立运行,适合发现编译错误
烧录运行的话,需要进行固件的全量编译

hb build -f

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

6.烧录固件

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

7.运行

烧录完成之后,打开MobaXterm,连接串口,重启开发板
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

组件模块开发

1.建立根目录

根据路径 applications\sample\wifi-iot\app 找到app目录 新建gn_practice目录
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

2.建立目录树

应用程序模块: application
驱动模块: driver
库模块: library
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

3.编写各模块源码

ps:每写完一个文件记得保存
先是application模块,建立一个子模块的c文件和头文件
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
子模块的c文件include对应的头文件
ps: 爆红只需要点击黄色小灯泡,添加到includePath即可 不会添加的可以看我的上一篇文章
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
新建一个主程序文件
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
编写主程序文件
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
接下来是driver模块和library模块
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
在主程序文件include两个模块的头文件
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

4.编写各模块脚本

先编写application模块脚本
ps: cflags是编译参数 这三种情况在默认编译方式下是不允许的,会引发编译错误,设置这三个参数后,编译系统会把它们不当作错误来处理
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
接下来编写driver和library模块
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

5.定位组件编译入口

【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
applications\sample\wifi-iot\app\BUILD.gn
修改三个模块的编译
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

6.编译烧录运行

设置

hb set

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

hb build -f

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

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2023-7-15 23:30:32修改
2
收藏 1
回复
举报
2条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

每次烧录都需要全量编译吗?

回复
2023-7-16 10:12:09
笨笨的婧婧
笨笨的婧婧

流程很详细

回复
2023-7-17 10:33:36
回复
    相关推荐