diff --git a/thirdparty/gflags/HPKBUILD b/thirdparty/gflags/HPKBUILD index af719e9cb3f41200258df0bf1a2de5f041a54e09..dae0b39fe906c1393585a88c1851421134fe1862 100644 --- a/thirdparty/gflags/HPKBUILD +++ b/thirdparty/gflags/HPKBUILD @@ -30,15 +30,35 @@ build() { } package() { - cd "$builddir" + cd $builddir make -C $ARCH-build install >> `pwd`/$ARCH-build/build.log 2>&1 + ret=$? cd $OLDPWD + return $ret } check() { + if [ $ARCH == "armeabi-v7a" ] + then + cp ${OHOS_SDK}/native/llvm/lib/arm-linux-ohos/libc++_shared.so $builddir/$ARCH-build + elif [ $ARCH == "arm64-v8a" ] + then + cp ${OHOS_SDK}/native/llvm/lib/aarch64-linux-ohos/libc++_shared.so $builddir/$ARCH-build + else + echo "${ARCH} not support" + fi + cd $builddir/$ARCH-build/test + ohos_sdk_cmake_path=${OHOS_SDK//\//\\\/}"\/native\/build-tools\/cmake\/bin\/cmake" + cat CTestTestfile.cmake | sed 's/'$ohos_sdk_cmake_path'/\/usr\/bin\/cmake/' > CTestTestfile_temp.cmake + rm CTestTestfile.cmake + mv CTestTestfile_temp.cmake CTestTestfile.cmake + ret=$? + cd $OLDPWD echo "The test must be on an OpenHarmony device!" + # ctest + return $ret } -cleanbuild(){ +cleanbuild() { rm -rf ${PWD}/$builddir #${PWD}/$packagename } diff --git a/thirdparty/gflags/HPKCHECK b/thirdparty/gflags/HPKCHECK new file mode 100644 index 0000000000000000000000000000000000000000..6470e73d447b937ed4cc436dcddb31217b4c7850 --- /dev/null +++ b/thirdparty/gflags/HPKCHECK @@ -0,0 +1,27 @@ +# Contributor: wupingyuan <3415239542@qq.com> +# Maintainer: wupingyuan <3415239542@qq.com> + +source HPKBUILD > /dev/null 2>&1 +logfile=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/${pkgname}_${ARCH}_${OHOS_SDK_VER}_test.log +OLDPATH=$LD_LIBRARY_PATH +checkprepare() { + # 添加动态库libc++_shared.so所在路径到环境变量 + export LD_LIBRARY_PATH=${LYCIUM_THIRDPARTY_ROOT}/${pkgname}/$builddir/$ARCH-build:$LD_LIBRARY_PATH +} + +openharmonycheck() { + res=0 + cd ${builddir}/${ARCH}-build + ctest > $logfile 2>&1 + res=$? + if [ $res -ne 0 ] + then + mkdir ${LYCIUM_FAULT_PATH}/${pkgname} + cp Testing/Temporary/LastTest.log ${LYCIUM_FAULT_PATH}/${pkgname}/ + fi + cd $OLDPWD + # 恢复环境变量 + export LD_LIBRARY_PATH=$OLDPATH + unset OLDPATH + return $res +} diff --git a/thirdparty/gflags/OAT.xml b/thirdparty/gflags/OAT.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a171314c1b137260a7af12af4d7d1a3f53d9c4b --- /dev/null +++ b/thirdparty/gflags/OAT.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/thirdparty/gflags/README.OpenSource b/thirdparty/gflags/README.OpenSource new file mode 100644 index 0000000000000000000000000000000000000000..861dcfcb30afd9c294e6817fc27214d1d829a6af --- /dev/null +++ b/thirdparty/gflags/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "gflags", + "License": "BSD 3-Clause New or Revised License", + "License File": "COPYING.txt", + "Version Number": "v2.2.2", + "Owner": "3415239542@qq.com", + "Upstream URL": "https://github.com/gflags/gflags/archive/refs/tags/v2.2.2.tar.gz", + "Description": "The gflags package contains a C++ library that implements commandline flags processing." + } +] diff --git a/thirdparty/gflags/README_zh.md b/thirdparty/gflags/README_zh.md new file mode 100644 index 0000000000000000000000000000000000000000..39a8bd3cf513a016fbd466ccbfca1fbcfcad309b --- /dev/null +++ b/thirdparty/gflags/README_zh.md @@ -0,0 +1,11 @@ +# gflags三方库说明 +## 功能简介 +gflags是一种命令行解析工具,主要用于解析用命令行执行可执行文件时传入的参数。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Release +- SDK版本:ohos_sdk_public 4.0.8.1 (API Version 10 Release) +- 三方库版本:v2.2.2 +- 当前适配的功能:命令解析 + +## 集成方式 ++ [应用hap包集成](docs/hap_ingtegrate.md) diff --git a/thirdparty/gflags/docs/hap_ingtegrate.md b/thirdparty/gflags/docs/hap_ingtegrate.md new file mode 100644 index 0000000000000000000000000000000000000000..1693ccaab16ae2e775f04bb5ed8a7f5517d1a7aa --- /dev/null +++ b/thirdparty/gflags/docs/hap_ingtegrate.md @@ -0,0 +1,78 @@ +# gflags集成到应用hap + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +## 开发环境 + +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 4.0.8.1 (API Version 10 Release)](https://gitee.com/link?target=http%3A%2F%2Fdownload.ci.openharmony.cn%2Fversion%2FMaster_Version%2FOpenHarmony_4.0.8.1%2F20230608_091058%2Fversion-Master_Version-OpenHarmony_4.0.8.1-20230608_091058-ohos-sdk-public.tar.gz) +- [DevEco Studio 3.1 Release](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F81%2Fv3%2FtgRUB84wR72nTfE8Ir_xMw%2Fdevecostudio-windows-3.1.0.501.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230621T074329Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D22F6787DF6093ECB4D4E08F9379B114280E1F65DA710599E48EA38CB24F3DBF2) +- [准备三方库构建环境](../../../lycium/README.md#1编译环境准备) +- [准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/gflags #三方库gflags的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── HPKCHECK #自动化脚本 + ├── OAT.xml #OAT文件 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 在lycium目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../lycium/README.md#1编译环境准备) + + ``` + cd lycium + ./build.sh gflags + ``` +- 三方库头文件及生成的库 + 在lycium目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + ``` + gflags/arm64-v8a gflags/armeabi-v7a + + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库和依赖库拷贝到该目录下,如下图所示 +   + ![thirdparty_install_dir](pic/gflags_install_dir.jpg) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ```shell + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/gflags/${OHOS_ARCH}/lib/libgflags.a) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/gflags/${OHOS_ARCH}/include) + ``` + +![gflags_usage](pic/gflags_usage.jpg) + + + +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../lycium/README.md#3ci环境准备) + +- 将编译生成的可执行文件及生成的动态库准备好 + +- 将准备好的文件推送到开发板,进入到构建的目录执行:ctest + + ![gflags_test](pic/gflags_test.jpg) + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/gflags/docs/pic/gflags_install_dir.jpg b/thirdparty/gflags/docs/pic/gflags_install_dir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33d7a8e7daba5aca57f0f2348d9eeacb98c8b0f2 Binary files /dev/null and b/thirdparty/gflags/docs/pic/gflags_install_dir.jpg differ diff --git a/thirdparty/gflags/docs/pic/gflags_test.jpg b/thirdparty/gflags/docs/pic/gflags_test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72b9737443d1c943fd93ebf331b53b36aad6169f Binary files /dev/null and b/thirdparty/gflags/docs/pic/gflags_test.jpg differ diff --git a/thirdparty/gflags/docs/pic/gflags_usage.jpg b/thirdparty/gflags/docs/pic/gflags_usage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e6fc2a3f9134e33d99c43abbfa791afefd9727f Binary files /dev/null and b/thirdparty/gflags/docs/pic/gflags_usage.jpg differ