harmonyOS编译流程

在编译的时候,需要扫描相应的子系统配置文件,子系统配置文件包含以下三个文件,定义了子系统的名称和所在路径。

  1. build文件夹下的subsystem_config.json文件,主要包含子系统名称与路径信息,在preloader阶段被加载,根据子系统名称和路径信息查找该路径下的ohos.build文件。
  2. product配置文件,在productdefine/common/products文件夹下,文件名为{产品名称}.json,在preloader阶段被加载。该配置文件主要包含产品名称,产品厂商,产品设备名,产品类型,产品对应子系统路径,产品所包含的部件等信息。配置该产品对应子系统时在该文件中添加product_build_path表示产品子系统目录,preloader阶段从该目录下加载对应子系统部件配置信息。
  3. device配置文件,在productdefine/common/device文件夹下,文件名为{产品设备名称}.json,在preloader阶段被加载。该配置文件主要包含设备名称,设备厂商,设备的目标os与目标cpu,设备对应子系统路径等信息。配置该设备对应子系统时在该文件中添加device_build_path表示设备子系统目录,preloader阶段从该目录下加载对应子系统部件配置信息。

现在支持在产品和设备配置的时候添加产品和设备对应的子系统路径,扫描时扫描对应目录下的子系统部件配置信息。

1、 gn gen
2、通过–dotfile指定根gn文件 build/lite/.gn
.gn文件的内容
**The location of the build configuration file. #1.完成gn的配置工作
buildconfig = “//build/lite/config/BUILDCONFIG.gn”
**The source root location. #2.完成gn的编译工作
root = “//build/lite”
3、构建编译 build/lite/BUILD.gn
有三个概念贯彻整个鸿蒙系统,子系统(subsystems),组件(components),功能(features).
先找到product_path下的 配置文件 config.json,里面配置了项目所要使用的子系统和组件.
再遍历项目所使用的组件是否能再 //build/lite/components/*.json组件集中能找到.
将找到的组件targets加入到编译列表deps中.targets指向了要编译的组件目录.例如内核组件时指向了://kernel/liteos_a:kernel,
4、结果文件
那么执行完gn gen 都会生成哪些文件和目录呢?
out/rk3568/
args.gn build.ninja build.ninja.d toolchain.ninja
其中build.ninja.d文件是所有BUILD.gn的依赖集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值