写点什么

【坚果派 - 坚果】OpenHarmony 编译命令

作者:坚果
  • 2023-04-15
    广东
  • 本文字数:3162 字

    阅读完需:约 10 分钟

【坚果派 - 坚果】OpenHarmony编译命令

编译命令汇总

作者:坚果

团队:坚果派

公众号:“大前端之旅”

润开鸿技术专家,华为 HDE,InfoQ 签约作者,OpenHarmony 布道师,擅长 HarmonyOS 应用开发、熟悉服务卡片开发,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领 100+队员完成 Pr 的提交合入。欢迎通过主页或者私信联系我,加入坚果派,一起学习鸿蒙应用开发。

首先,在源码根目录下执行 prebuilts 脚本进行预编译,安装编译器及二进制工具。


bash build/prebuilts_download.sh
复制代码


接着,使用命令行方式或 hb 方式执行编译命令。

1.命令行方式

代码根目录下执行全量版本的编译命令:

Release 版本 :


./build.sh --product-name {product_name}
复制代码


Debug 版本 :


./build.sh --product-name {product_name} --gn-args is_debug=true
复制代码


注意: Debug 全版本因镜像大小限制,全量编译可能无法烧录,建议单模块编译 Debug 二进制。使用如下命令单独编译模块:

./build.sh --product-name {product_name} --gn-args is_debug=true --build-target {target_name}


{product_name}为当前版本支持的平台。比如:hispark_taurus_standard 等。


编译完成后,结果镜像保存在 out/{device_name}/packages/phone/images/ 目录下。

编译命令支持选项:./build.sh

-h, --help                                        # 显示帮助信息并退出--source-root-dir=SOURCE_ROOT_DIR                 # 指定路径--product-name=PRODUCT_NAME                       # 指定产品名--device-name=DEVICE_NAME                         # 指定装置名称--target-cpu=TARGET_CPU                           # 指定CPU--target-os=TARGET_OS                             # 指定操作系统-T BUILD_TARGET, --build-target=BUILD_TARGET      # 指定编译目标,可以指定多个--gn-args=GN_ARGS                                 # GN参数,支持指定多个--ninja-args=NINJA_ARGS                           # Ninja参数,支持指定多个-v, --verbose                                     # 生成时显示所有命令行--keep-ninja-going                                # 让Ninja持续到1000000个工作失败--jobs=JOBS--export-para=EXPORT_PARA--build-only-gn                                   # 只做GN解析,不运行Ninja--ccache                                          # 可选  如果使用ccache,需要本地安装ccache--fast-rebuild                                    # 快速重建,默认值为False--log-level=LOG_LEVEL                             # 指定编译期间的日志级别','三个级别可选:debug, info and error,default='info'--device-type=DEVICE_TYPE                         # 指定设备类型,默认值为'default'--build-variant=BUILD_VARIANT                     # 指定设备操作模式,默认值为'user'
复制代码

2.hb 方式

hb 是 OpenHarmony 的命令行工具,用来执行编译命令。以下对 hb 的常用命令进行说明。

hb set

设置要编译的产品


hb set -husage: 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 dir 可直接设置代码根目录

  • hb set -p 设置要编译的产品

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 -husage: hb build [-h] [-b BUILD_TYPE] [-c COMPILER] [-t [TEST [TEST ...]]] [-cpu TARGET_CPU] [--dmverity] [--tee]                [-p PRODUCT] [-f] [-n] [-T [TARGET [TARGET ...]]] [-v] [-shs] [--patch] [--compact-mode]                [--gn-args GN_ARGS] [--keep-ninja-going] [--build-only-gn] [--log-level LOG_LEVEL] [--fast-rebuild]                [--device-type DEVICE_TYPE] [--build-variant BUILD_VARIANT]                [component [component ...]]
positional arguments: component name of the component, mini/small only
optional arguments: -h, --help show this help message and exit -b BUILD_TYPE, --build_type BUILD_TYPE release or debug version, mini/small only -c COMPILER, --compiler COMPILER specify compiler, mini/small only -t [TEST [TEST ...]], --test [TEST [TEST ...]] compile test suit -cpu TARGET_CPU, --target-cpu TARGET_CPU select cpu --dmverity enable dmverity --tee Enable tee -p PRODUCT, --product PRODUCT build a specified product with {product_name}@{company} -f, --full full code compilation -n, --ndk compile ndk -T [TARGET [TARGET ...]], --target [TARGET [TARGET ...]] compile single target -v, --verbose show all command lines while building -shs, --sign_haps_by_server sign haps by server --patch apply product patch before compiling --compact-mode compatible with standard build system set to false if we use build.sh as build entrance --gn-args GN_ARGS specifies gn build arguments, eg: --gn-args="foo="bar" enable=true blah=7" --keep-ninja-going keeps ninja going until 1000000 jobs fail --build-only-gn only do gn parse, do not run ninja --log-level LOG_LEVEL specifies the log level during compilationyou can select three levels: debug, info and error --fast-rebuild it will skip prepare, preloader, gn_gen steps so we can enable it only when there is no change for gn related script --device-type DEVICE_TYPE specifies device type --build-variant BUILD_VARIANT specifies device operating mode
复制代码


  • hb build 后无参数,会按照设置好的代码路径、产品进行编译,编译选项使用与之前保持一致。-f 选项将删除当前产品所有编译产品,等同于 hb clean + hb build.

  • hb build {component_name}:基于设置好的产品对应的单板、内核,单独编译部件(e.g.:hb build kv_store)。

  • hb build -p ipcamera@hisilicon:免 set 编译产品,该命令可以跳过 set 步骤,直接编译产品。

  • 在 device/board/device_company 下单独执行 hb build 会进入内核选择界面,选择完成后会根据当前路径的单板、选择的内核编译出仅包含内核、驱动的镜像。

hb clean

清除 out 目录对应产品的编译产物,仅保留 args.gn、build.log。清除指定路径可输入路径参数:hb clean out/board/product,默认将清除当前 hb set 的产品对应 out 路径。


hb cleanusage: hb clean [-h] [out_path]
positional arguments: out_path clean a specified path.
optional arguments: -h, --help show this help message and exit
复制代码


发布于: 刚刚阅读数: 2
用户头像

坚果

关注

此间若无火炬,我便是唯一的光 2020-10-25 加入

公众号:“大前端之旅”,OpenHarmony布道师,润和软件鸿蒙KOL,InfoQ签约作者,电子发烧友鸿蒙KOL

评论

发布
暂无评论
【坚果派 - 坚果】OpenHarmony编译命令_OpenHarmony_坚果_InfoQ写作社区