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

系统 OpenHarmony
本文介绍了编译构建系统的使用,新增组件的步骤,组件模块开发的方法。在applications\sample目录下新建component_demo目录,之后在component_demo目录下新建demo.c文件。

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

51CTO 开源基础软件社区

https://ost.51cto.com

前言

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

新增组件

准备好开发套件。

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

一、编写组件源码

在applications\sample目录下新建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 根据路径 build\lite\components\applications.json 打开applications.json。

定义组件,保存文件。

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

ps2: adapted_kernel是适配内核。

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

五、将组件配置到产品

根据路径 vendor\hisilicon\hispark_pegasus\config.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编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

组件模块开发

一、建立根目录

根据路径 applications\sample\wifi-iot\app 找到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编译构建系统】介绍新增组件以及组件模块开发-开源基础软件社区

applications\sample\wifi-iot\app\BUILD.gn。

修改三个模块的编译。

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

六、编译烧录运行

设置:

hb set

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

编译:

hb build -f

编译成功。

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

烧录成功。

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

运行成功。

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

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

51CTO 开源基础软件社区

https://ost.51cto.com

责任编辑:jianghua 来源: 51CTO 开源基础软件社区
相关推荐

2013-01-10 13:50:25

Android开发组件

2017-07-11 11:02:03

APP模块化架构

2023-08-24 16:45:16

应用开发父自定义组件

2023-06-12 15:43:44

鸿蒙智能家居开发

2022-06-07 10:33:29

Camera组件鸿蒙

2022-08-17 16:38:46

WLAN接口组件功能

2021-02-20 12:34:53

鸿蒙HarmonyOS应用开发

2021-08-05 09:49:44

鸿蒙HarmonyOS应用

2023-03-09 15:15:21

鸿蒙模块编译

2009-07-10 18:06:59

JTree Swing

2021-12-02 10:05:01

鸿蒙HarmonyOS应用

2021-07-27 11:54:51

windows系统OpenHarmony

2022-06-01 22:35:25

滑杆组件鸿蒙

2022-02-14 14:14:02

鸿蒙数据可视化JS

2023-04-26 15:29:35

NAPI模块鸿蒙

2015-02-12 10:37:20

Dockerdocker生态系统

2023-07-28 15:32:26

鸿蒙操作系统

2009-07-17 11:13:46

AWT和SwingSwing组件

2021-06-28 09:38:50

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号