From fc66ef6c6d28f8ac16c9eb9fc553ece4c91890ee Mon Sep 17 00:00:00 2001 From: zhongluping <278527840@qq.com> Date: Fri, 27 Oct 2023 09:15:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhongluping <278527840@qq.com> --- README_zh.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/README_zh.md b/README_zh.md index 36541419..04166067 100755 --- a/README_zh.md +++ b/README_zh.md @@ -4,6 +4,16 @@ 本仓库主要用于存放已经适配OpenHarmony的C/C++三方库的适配脚本和OpenHarmony三方库适配指导文档、三方库适配相关的工具。 +本仓库适配的三方库主要是通过[openharmony linux SDK进行交叉编译](lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md)并集成到北向应用中。基于该交叉编译方式,提供了一套快速交叉编译的工具:lycium交叉编译工具. + +## lycium交叉编译工具 + +lycium交叉编译工具的使用请阅读[lycium交叉编译框架](lycium/README.md)。 + +## 北向应用集成三方库 + +- [北向应用集成三方库](docs/thirdparty_knowledge.md) + ## 本仓库目录 ```shell @@ -16,16 +26,16 @@ tpc_c_cplusplus ...... ``` +## 三方库列表 + +- [C/C++三方库列表](docs/thirdparty_list.md) + ## 如何贡献 - [遵守仓库目录结构](#本仓库目录) - [遵守OpenHarmony编码贡献规范](https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/dev/docs/contribute/README.md) - [贡献三方库](thirdparty/README_zh.md) -## 三方库列表 - -- [C/C++三方库列表](docs/thirdparty_list.md) - -## 北向应用集成三方库 +## FAQ -- [北向应用集成三方库](docs/thirdparty_knowledge.md) +[C/C++三方库常见FAQ](./)。 -- Gitee From 7d57304e649d5932f24143d787d2196d0c88f634 Mon Sep 17 00:00:00 2001 From: zhongluping <278527840@qq.com> Date: Fri, 27 Oct 2023 10:18:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhongluping <278527840@qq.com> --- README_zh.md | 27 +++++++++-------- lycium/README.md | 75 +++++++++++++++++++++++++++++++----------------- 2 files changed, 63 insertions(+), 39 deletions(-) diff --git a/README_zh.md b/README_zh.md index 04166067..c4c495a1 100755 --- a/README_zh.md +++ b/README_zh.md @@ -4,37 +4,40 @@ 本仓库主要用于存放已经适配OpenHarmony的C/C++三方库的适配脚本和OpenHarmony三方库适配指导文档、三方库适配相关的工具。 -本仓库适配的三方库主要是通过[openharmony linux SDK进行交叉编译](lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md)并集成到北向应用中。基于该交叉编译方式,提供了一套快速交叉编译的工具:lycium交叉编译工具. +## 三方库适配 -## lycium交叉编译工具 +本仓库的三方库主要是通过[openharmony linux SDK进行交叉编译](lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md)进行适配的,并集成到应用端使用。交叉编译构建的方式有: -lycium交叉编译工具的使用请阅读[lycium交叉编译框架](lycium/README.md)。 +- [cmake 编译构建](./) +- [configure 编译构建方式](./) +- [make 编译构建](./) -## 北向应用集成三方库 +为了帮助开发者快速便捷的完成C/C++三方库交叉编译,我们开发了一套交叉编译框架[lycium](),其涵盖了以上三种构建方式。 -- [北向应用集成三方库](docs/thirdparty_knowledge.md) +## 已适配三方库列表 + +- [c/c++三方库列表](./) + +## 应用端集成三方库知识赋能 + +- [应用端集成三方库知识赋能](docs/thirdparty_knowledge.md) ## 本仓库目录 ```shell tpc_c_cplusplus ├── README_zh.md # 仓库主页 -├── docs # 说明文档/三方库适配文档 +├── docs # 说明文档/三方库适配文档8 ├── lycium # 三方库适配相关工具 ├── thirdparty # 已经适配OpenHarmony的三方库的构建脚本 ├── LICENSE # 本仓库的开源license文件 ...... ``` -## 三方库列表 - -- [C/C++三方库列表](docs/thirdparty_list.md) - ## 如何贡献 - [遵守仓库目录结构](#本仓库目录) -- [遵守OpenHarmony编码贡献规范](https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/dev/docs/contribute/README.md) -- [贡献三方库](thirdparty/README_zh.md) +- [通过lycium快速交叉编译C/C++三方库](./) ## FAQ diff --git a/lycium/README.md b/lycium/README.md index 397722f8..6410b735 100644 --- a/lycium/README.md +++ b/lycium/README.md @@ -1,58 +1,79 @@ -# HPKBUILD build script! +# lycium 交叉编译框架 -协助开发者, 在 OpenHarmony 系统上快速编译、验证以及长期维护 c/c++ 库. +## 简介 -## 使用 +lycium是一款协助开发者通过shell语言实现C/C++三方库快速交叉编译,并在OpenHarmony 系统上快速验证的编译框架工具。开发者只需要设置对应C/C++三方库的编译方式以及编译参数,通过lycium就能快速的构建出能在OpenHarmony 系统运行的二进制文件。 -执行脚本build.sh,自动编译thridparty目录下的所有开源库,并打包安装到 usr\/\$pkgname/$ARCH 目录 +## 原则 -```shell - ./build.sh # 默认编译 thirdparty 目录下的多有库 -``` +**移植过程,不可以改源码(即不patchc/cpp文件,不patch构建脚本)。如移植必须patch,patch必须评审,给出充分理由。(不接受业务patch)** + +## 目录结构介绍 ```shell - ./build.sh aaa bbb ccc ... # 编译 thirdparty 目录下指定的 aaa bbb ccc ...库 当 aaa 库存在依赖时,必须保证入参中包含依赖,否则 aaa 库不会编译 +lycium +├── doc # lycium工具相关说明文档 +├── Buildtools # 存放编译环境准备说明 +├── CItools # 测试环境搭建相关说明文档 +├── script # 项目依赖的脚本 +├── template # thirdparty 目录中库的构建/测试模板 +├── build.sh # 顶层构建脚本 +├── test.sh # 顶层测试脚本 ``` -## 原则 +## 通过lycium工具快速共建C/C++三方库 -**移植过程,不可以改源码(即不patchc/cpp文件,不patch构建脚本)。如移植必须patch,patch必须评审,给出充分理由。(不接受业务patch)** +### 编译环境准备 -## 如何贡献 +请阅读 [Buildtools README](./Buildtools/README.md) -为 lycium 项目共享,开源三方库 +### 修改三方库的编译方式以及编译参数 -### 1.编译环境准备 +lycium框架提供了[HPKBUILD](./lycium/template/HPKBUILD)文件供开发者对相应的C/C++三方库的编译配置。具体方法: -请阅读 [Buildtools README](./Buildtools/README.md) +1. 在[thirdparty](../thirdparty/)目录下新建需要共建的三方库名字pkgname。 +2. 将[HPKBUILD](./template/HPKBUILD)模板文件拷贝到新建三方库目录下。 +3. 根据三方库实际情况修改[HPKBUILD](./template/HPKBUILD)模板,文件修改可参考[minizip共建](../docs/thirdparty_port.md#快速适配三方库实例)。 -### 2.HPKBUILD 编写说明 +### 快速编译三方库 -请阅读 [template README](./template/README.md) +配置完三方库的编译方式参数后,在lycium目录执行./build.sh pkgname,进行自动编译三方库,并打包安装到 usr\/\$pkgname/$ARCH 目录 -### 3.编译方法 +```shell + ./build.sh # 默认编译 thirdparty 目录下的多有库 +``` -请参照[使用介绍](##使用) +```shell + ./build.sh aaa bbb ccc ... # 编译 thirdparty 目录下指定的 aaa bbb ccc ...库 当 aaa 库存在依赖时,必须保证入参中包含依赖,否则 aaa 库不会编译 +``` -### 4.编译后三方库使用 +**lycium框架是通过linux shell脚本语言编写的,如果对shell语言不熟悉的开发者可以先学习[Linux Shell编程基础教程](https://blog.51cto.com/centos5/912584)。或者查找其他linux shell编程资料** + +### 编译后三方库使用 请阅读[北向应用如何使用三方库二进制文件](doc/app_calls_third_lib.md) -### 5.CI环境准备 +### 快速验证C/C++三方库 + +1. 测试环境准备 -请查阅 [lycium CItools](./CItools/README_zh.md) + 业界内C/C++三方库测试框架多种多样,我们无法将其统一,因此为了保证原生库功能完整,我们基于原生库的测试用例进行测试验证。为此,我们需要集成了一套可以在OH环境上进行cmake, ctest等操作的环境,具体请阅读 [lycium CItools](./CItools/README_zh.md)。 -### 6.测试通过即可提交PR,附带测试成功的截屏 +2. 测试脚本编写 -## 介绍 + lycium框架提供了[HPKCHECK](./template/HPKCHECK)文件供开发者对相应的C/C++三方库的自动化测试,开发者只需在脚本中配置当前三方库需要测试的命令即可。 -Buildtools: 存放编译环境准备说明 +3. 测试运行 -script: 项目依赖的脚本 + 由于我们运行的是原生库的测试用例,因此我们需要将原生库的源码及生成文件都作为测试资源打包到开发板进行测试(直接将tpc_c_cplusplus直接打包成一个测试资源,并且保证测试资源在开发板的测试路径与编译路径保持一致,避免部分原生库因编译时对测试文件配置了路径而导致测试不过),然后在[lycium](./)目录下执行脚本./test.sh,自动运行thridparty目录下已编译的三方库,并在终端显示已测试三方库总数以及通过和未通过的三方库。 -template: thirdparty 目录中库的构建模板 + ```shell + ./test.sh # 默认测试 thirdparty 目录下的所有已编译的三方库 + ``` -build.sh: 顶层构建脚本 + ```shell + ./test.sh aaa bbb ccc ... # 测试 thirdparty 目录下指定的 aaa bbb ccc ...库 当指定的库未编译时不会进行测试 + ``` ## TODO -- Gitee