蓝香蕉代码 |【鸿蒙三方库编译】lycium_plusplus(lycium++)高效完成鸿蒙C/C++编译
lycium_plusplus(lycium++)提供高效的,支持外部仓导入的鸿蒙三方库交叉编译框架
·
lycium_plusplus介绍
lycium++ 是基于openharmony cpp 编译框架lycium的增强
主要包含以下几个目标:
- 针对目标产物,构建依赖关系树,一键构建
- 对于三方库的HPKBUILD,提供多版本构建能力,代码仓脱离本仓独立发布,可通过三方件源码仓获取编译
- 提供hnp构建产物的生成,支持Harmony系统使用
关于lycium编译框架,请访问OpenHarmony-SIG/tpc_c_cplusplus了解更多
如何使用
原生构建方式
本项目遵循lycium编译框架,您可以基于lycium基础进行构建,如
cd lyium
./build.sh unzip
通过原生方式,lycium编译框架会基于community/thirdparty 中已存在的三方库进行编译构建
增强型构建方式
框架示意
外部适配仓参与构建
本项目新增目录outerrepo用于临时存放外部仓,外部仓信息存放在outerrepo/module.json中
该文件中包含的关键要素如下:
"module" : [
{
"name" : "tree",
"branch" : "ohos_2.2.1",
"version" : "2.2.1",
"type" : "git",
"url" : "https://gitcode.com/OpenHarmonyPCDeveloper/ohos_tree.git"
}
]
name为模块名称,如上述示例中的treeurl为适配仓代码地址,以及适配仓所对应的原生代码tree的版本信息versionbranch为适配仓为该对应关系中适配仓的对应分支信息type为适配仓托管类型的下载方式,如上述中,ohos_tree适配仓的下载方式为git(其他获取源码方式待扩展)
外部ports仓规范
外部代码仓适配遵循lycium原生框架所需要的内容,仅作为独立仓库部署,例如tree的适配,额外可以增加打包hnp时的配置文件hnp.json
├── 0001-ports-for-ohos.patch
├── HPKBUILD
└── hnp.json
hnp.json示例如下:
{
"type":"hnp-config",
"name":"tree",
"version":"2.2.1",
"install":{}
}
此外,在HPKBUILD中,按照需求可以增加archive阶段
archive() {
mkdir -p ${LYCIUM_ROOT}/output/$ARCH
pushd $LYCIUM_ROOT/usr/$pkgname/$ARCH
tar -zvcf ${LYCIUM_ROOT}/output/$ARCH/${pkgname}_${pkgver}.tar.gz *
popd
cp hnp.json $LYCIUM_ROOT/usr/$pkgname/$ARCH
${HNP_TOOL} pack -i ${LYCIUM_ROOT}/usr/$pkgname/$ARCH -o ${LYCIUM_ROOT}/output/$ARCH/
}

该阶段将会在package()阶段后被调用,该阶段需要按照${LYCIUM_ROOT}/output/$ARCH路径进行输出
编译
适配完成后,可以按照原生编译的方式执行,仍以tree举例:
cd lyium
./build.sh tree

产物获取
获取编译产物
- 可在
lycium/usr/tree/<ARCH>下获取对应架构下的二进制产物 - 可在
lycium/output/<ARCH>/下获取对应架构下的归档产物
贡献
生成hnp的命令行产物,可以贡献到lycium_plusplus中,通过提交module.json即可简单完成贡献
您的hnp产物,也可以贡献到DevBox中,通过该方式使用命令行
更多推荐



所有评论(0)