news 2026/2/27 13:16:16

【鸿蒙三方库编译】lycium_plusplus(lycium++)高效完成鸿蒙C/C++编译

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【鸿蒙三方库编译】lycium_plusplus(lycium++)高效完成鸿蒙C/C++编译

lycium_plusplus介绍

项目地址

lycium++ 是基于openharmony cpp 编译框架lycium的增强

主要包含以下几个目标:

  1. 针对目标产物,构建依赖关系树,一键构建
  2. 对于三方库的HPKBUILD,提供多版本构建能力,代码仓脱离本仓独立发布,可通过三方件源码仓获取编译
  3. 提供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" } ]
  1. name为模块名称,如上述示例中的tree
  2. url为适配仓代码地址,以及适配仓所对应的原生代码tree的版本信息version
  3. branch为适配仓为该对应关系中适配仓的对应分支信息
  4. 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

产物获取

获取编译产物

  1. 可在lycium/usr/tree/<ARCH>下获取对应架构下的二进制产物
  2. 可在lycium/output/<ARCH>/下获取对应架构下的归档产物
贡献

生成hnp的命令行产物,可以贡献到lycium_plusplus中,通过提交module.json即可简单完成贡献

您的hnp产物,也可以贡献到DevBox中,通过该方式使用命令行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 6:15:32

Python 爬虫实战:aiohttp 实现异步高并发爬虫

前言 传统同步爬虫受限于 “请求 - 等待 - 响应” 的串行执行模式&#xff0c;在面对海量 URL 采集场景时&#xff0c;I/O 等待时间占比极高&#xff0c;采集效率难以满足业务需求。异步编程通过事件循环机制&#xff0c;可在单个线程内同时处理多个网络请求&#xff0c;最大化…

作者头像 李华
网站建设 2026/2/19 9:23:47

Python 爬虫实战:asyncio 异步爬虫任务调度

前言 在基于 aiohttp 实现的异步爬虫中&#xff0c;单纯依靠 asyncio.gather 批量执行协程虽能实现高并发&#xff0c;但面对复杂场景&#xff08;如任务优先级调度、动态任务添加、任务失败重试、资源限流&#xff09;时&#xff0c;缺乏灵活的任务调度能力。asyncio 作为 Py…

作者头像 李华
网站建设 2026/2/21 20:52:36

必学收藏|AI Agent架构全解析:从ReAct到LangGraph设计模式

本文全面介绍了AI Agent的五大架构类型(反应型、审议式、混合、神经符号和认知)及LangGraph中的三大设计模式(多Agent系统、规划Agent、反思批判)。详细阐述了各架构特点、应用场景和优缺点&#xff0c;从基础到高级展示了AI Agent构建方法&#xff0c;强调选择合适架构的重要性…

作者头像 李华
网站建设 2026/2/19 3:31:38

COMSOL各向异性黑磷

comsol各向异性黑磷。搞黑磷模拟的朋友应该都懂&#xff0c;这玩意儿在不同方向上导电性能差异大到离谱。上次有个哥们拿着实验数据找我&#xff0c;说在COMSOL里死活复现不出黑磷的电流分布&#xff0c;我一看他的模型设置——好家伙&#xff0c;材料属性直接用了各向同性导电…

作者头像 李华
网站建设 2026/2/24 10:28:28

ORACLE学习笔记总结(数据库维护联机重做日志)

Oracle数据库联机重做日志详解一、什么是联机重做日志&#xff1f;1.1 基本概念联机重做日志&#xff08;Online Redo Log&#xff09;是Oracle数据库中用于记录所有数据变化的物理文件。它记录了数据库的所有修改操作&#xff0c;确保数据的一致性和可恢复性。1.2 核心作用数据…

作者头像 李华