niobe/build/lite/README_zh.md

193 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 轻量级编译构建组件<a name="ZH-CN_TOPIC_0000001130006475"></a>
- [简介](#section11660541593)
- [目录](#section161941989596)
- [说明](#section1312121216216)
- [使用说明](#section129654513264)
- [相关仓](#section1371113476307)
## 简介<a name="section11660541593"></a>
一个基于gn和ninja的支持OpenHarmony组件化开发的编译框架主要提供以下功能
- 构建产品。
- 独立构建芯片厂商组件。
- 独立构建单个组件。
在开发编译构建前,应了解如下基本概念:
- 组件
可复用的软件单元,它可包含源码、配置文件、资源文件和编译脚本等。
- gn
Generate ninja的缩写一种元构建系统用于产生ninja文件。
- ninja
ninja是一个专注于速度的小型构建系统。
构建流程如下:
编译构建流程如图1所示主要包括设置和编译两步
**图 1** 编译构建流程<a name="fig1531311552204"></a>
![](figures/编译构建流程.jpg "编译构建流程")
1. hb set: 设置OpenHarmony源码目录和要编译的产品。
2. hb build: 编译产品、开发板或者组件。解决方案编译实现如下:
- 读取开发板配置:主要包括开发板使用的编译工具链、编译链接命令和选项等。
- 调用gn: 调用gn gen命令读取产品配置\(主要包括开发板、内核、选择的组件等\)生成解决方案out目录和ninja文件。
- 调用ninja调用ninja -C out/company/product启动编译。
- 系统镜像打包:将组件编译产物打包,制作文件系统镜像。
## 目录<a name="section161941989596"></a>
```
build/lite # 编译构建主目录
├── components # 组件描述文件。
├── hb # hb pip安装包源码。
├── make_rootfs # 文件系统制作脚本。
├── config # 编译相关的配置项
│ ├── component # 组件相关的模板定义。包括:静态库、动态库、扩展组件、模拟器库等
│ ├── kernel # 内核的编译配置参数
│ └── subsystem # 子系统模板
├── ndk # Native API相关编译脚本与配置参数
└── toolchain # 编译工具链相关,包括:编译器路径、编译选项、链接选项等。
```
## 说明<a name="section1312121216216"></a>
### 使用说明<a name="section129654513264"></a>
1. **前提条件**
- Linux服务器Ubuntu16.04及以上64位系统版本。
- Python 3.7.4及以上。
- OpenHarmony源码build\_lite仓下载成功。
2. **安装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
```
3. **编译命令**
1. **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 set 后无参数,进入默认设置流程
- hb set -root \[ROOT\_PATH\] 直接设置代码根目录
- hb set -p --product 设置要编译的产品
2. **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
```
3. **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 build后无参数会按照设置好的代码路径、产品进行编译编译选项使用与之前保持一致。
- hb build component基于设置好的产品对应的单板、内核单独编译组件e.g.hb build kv\_store\)。
- hb build -p PRODUCT免set编译产品该命令可以跳过set步骤直接编译产品。
- 在device/device\_company/board下单独执行hb build会进入内核选择界面选择完成后会根据当前路径的单板、选择的内核编译出仅包含内核、驱动的镜像。
4. **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.
```
## 相关仓<a name="section1371113476307"></a>
编译构建子系统
**[build\_lite](https://gitee.com/openharmony/build_lite)**