![](https://s5-media.51cto.com/ost/pc/static/noavatar.gif)
回复
一个基于gn和ninja的支持OpenHarmony组件化开发的编译框架,主要提供以下功能:
构建产品。
独立构建芯片厂商组件。
独立构建单个组件。
在开发编译构建前,应了解如下基本概念:
组件
可复用的软件单元,它可包含源码、配置文件、资源文件和编译脚本等。
gn
Generate ninja的缩写,一种元构建系统,用于产生ninja文件。
ninja
ninja是一个专注于速度的小型构建系统。
构建流程如下:
编译构建流程如图1所示,主要包括设置和编译两步:
图 1 编译构建流程
build/lite # 编译构建主目录
├── components # 组件描述文件。
├── hb # hb pip安装包源码。
├── make_rootfs # 文件系统制作脚本。
├── config # 编译相关的配置项
│ ├── component # 组件相关的模板定义。包括:静态库、动态库、扩展组件、模拟器库等
│ ├── kernel # 内核的编译配置参数
│ └── subsystem # 子系统模板
├── ndk # Native API相关编译脚本与配置参数
├── product # 产品全量配置表,包括:配置单元、子系统列表、编译器等。
└── toolchain # 编译工具链相关,包括:编译器路径、编译选项、链接选项等。
前提条件
安装hb
在源码根目录下执行:
python3 -m pip install --user build/lite
执行hb -h有相关帮助信息,有打印信息即表示安装成功:
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
卸载方法:
python3 -m pip uninstall ohos-build
编译命令
hb set
hb set -h
usage: hb set [-h] [-root [ROOT_PATH]] [-p]
optional arguments:
-h, --help Show this help message and exit.
-root [ROOT_PATH], --root_path [ROOT_PATH]
Set OHOS root path.
-p, --product Set OHOS board and kernel.
hb env
查看当前设置信息
hb env
[OHOS INFO] root path: xxx
[OHOS INFO] board: hispark_taurus
[OHOS INFO] kernel: liteos
[OHOS INFO] product: ipcamera
[OHOS INFO] product path: xxx/vendor/hisilicon/ipcamera
[OHOS INFO] device path: xxx/device/hisilicon/hispark_taurus/sdk_linux_4.19
hb build
hb build -h
usage: hb build [-h] [-b BUILD_TYPE] [-c COMPILER] [-t [TEST [TEST ...]]]
[--dmverity] [-p PRODUCT] [-f] [-n]
[component [component ...]]
positional arguments:
component Name of the component.
optional arguments:
-h, --help Show this help message and exit.
-b BUILD_TYPE, --build_type BUILD_TYPE
Release or debug version.
-c COMPILER, --compiler COMPILER
Specify compiler.
-t [TEST [TEST ...]], --test [TEST [TEST ...]]
Compile test suit.
--dmverity Enable dmverity.
-p PRODUCT, --product PRODUCT
Build a specified product with
{product_name}@{company}, eg: ipcamera@hisilcon.
-f, --full Full code compilation.
-T [TARGET [TARGET ...]], --target [TARGET [TARGET ...]]
Compile single target
hb clean
清除out目录对应产品的编译产物,仅剩下args.gn、build.log。清除指定路径可输入路径参数:hb clean xxx/out/xxx,否则将清除hb set的产品对应out路径
hb clean
usage: hb clean [-h] [out_path]
positional arguments:
out_path Clean a specified path.
optional arguments:
-h, --help Show this help message and exit.
编译构建子系统
build_lite