想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
前言
本文介绍了编译构建系统的使用,新增组件的步骤,组件模块开发的方法。
新增组件
准备好开发套件。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
一、编写组件源码
在applicationssample目录下新建component_demo目录。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
之后在component_demo目录下新建demo.c文件。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
开始编写… 保存文件。
ps: 源码各部分组成简介可以看我的另一篇文章 https://ost.51cto.com/posts/25049。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
二、编写编译脚本
在component_demo目录下新建BUILD.gn文件。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
开始编写编译脚本… 保存文件。
- ps1: static_library是静态库 testdemo是库名称,最终会被编译成libtestdemo.a。
- ps2: sources 指定要编译的demo.c源文件。
- ps3: include_dirs是指定的include目录 "//"表示源码根目录,后面是目录名称。
- ps4: 注意逗号。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
三、单独编译目标
打开虚拟机,找到1.1.3源码根目录,选择在终端打开。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
查看具体用法。
hb build -h
ps:语法是 hb build -T 路径 : 目标。
hb build -f -T //applications/sample/component_demo:testdemo
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
四、添加组件定义
回到VSCode 根据路径 buildlitecomponentsapplications.json 打开applications.json。
定义组件,保存文件。
ps1: targets是编译入口 是源码根目录下的applications/sample/component_demo:testdemo。
ps2: adapted_kernel是适配内核。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
五、将组件配置到产品
根据路径 vendorhisiliconhispark_pegasusconfig.json 打开config.json 找到 “subsystem”: “applications” 进行配置,保存文件。
- ps: 注意逗号。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
单独编译组件。
hb build -f testdemo
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
- ps:在轻量系统中,单独编译的目标或组件,不能独立运行,适合发现编译错误。
烧录运行的话,需要进行固件的全量编译。
hb build -f
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
六、烧录固件
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
七、运行
烧录完成之后,打开MobaXterm,连接串口,重启开发板。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
组件模块开发
一、建立根目录
根据路径 applicationssamplewifi-iotapp 找到app目录 新建gn_practice目录。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
二、建立目录树
- 应用程序模块: application
- 驱动模块: driver
- 库模块: library
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
三、编写各模块源码
- ps:每写完一个文件记得保存。
先是application模块,建立一个子模块的c文件和头文件。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
子模块的c文件include对应的头文件。
- ps: 爆红只需要点击黄色小灯泡,添加到includePath即可 不会添加的可以看我的上一篇文章。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
新建一个主程序文件。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
编写主程序文件。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
接下来是driver模块和library模块。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
在主程序文件include两个模块的头文件。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
四、编写各模块脚本
先编写application模块脚本。
- ps: cflags是编译参数 这三种情况在默认编译方式下是不允许的,会引发编译错误,设置这三个参数后,编译系统会把它们不当作错误来处理。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
接下来编写driver和library模块。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
五、定位组件编译入口
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
applicationssamplewifi-iotappBUILD.gn。
修改三个模块的编译。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
六、编译烧录运行
设置:
hb set
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
编译:
hb build -f
编译成功。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
烧录成功。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
运行成功。
【OpenHarmony编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区
想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com