使用OHOS SDK构建zziplib
参照OHOS IDE和SDK的安装方法配置好开发环境。
从gitee下载源码,当前最新的提交记录ID为6699e0fe8a0307b16dcc055eda04452e13abe63a。
执行如下命令:
git clone https://gitee.com/mirrors/zziplib.git
进入源码所在的目录,创建批处理文件ohos_build.cmd,内容如下:
@echo off
setlocal
set OHOS_SDK_HOME=D:\Tools\Huawei\OHOS\SDK\9
set CMAKE_HOME=D:\Tools\cmake-3.26.0-windows-x86_64
set PATH=%CMAKE_HOME%\bin;%PATH%
cmake --version
ninja --version
set SRC_ROOT=%CD%
set BUILD_ROOT=%SRC_ROOT%\build-ohos
set BUILD_TARGET=libzzip
cmake -G "Ninja Multi-Config" ^
-S %SRC_ROOT% ^
-B %BUILD_ROOT% ^
-DCMAKE_TOOLCHAIN_FILE=%OHOS_SDK_HOME%\native\build\cmake\ohos.toolchain.cmake ^
-DCMAKE_CXX_FLAGS="-Wno-unused-command-line-argument" ^
-DCMAKE_C_FLAGS="-Wno-unused-command-line-argument" ^
-DBUILD_STATIC_LIBS=ON ^
-DMSVC_STATIC_RUNTIME=ON ^
-DZZIPMMAPPED=OFF ^
-DZZIPFSEEKO=OFF ^
-DZZIPWRAP=OFF ^
-DZZIPSDL=OFF ^
-DZZIPBINS=OFF ^
-DZZIPTEST=OFF ^
-DZZIPDOCS=OFF ^
-DZZIPLIB_OPTIONS="-DZZIP_COMPAT=OFF;-DZZIP_PKGCONFIG=OFF"
cmake --build %BUILD_ROOT% --target %BUILD_TARGET% --config release --parallel
为了顺利通过编译,需要给现有的CMakeLists.txt打个补丁,内容如下:
diff --git a/zzip/CMakeLists.txt b/zzip/CMakeLists.txt
index c294c1f..aa4bd34 100644
--- a/zzip/CMakeLists.txt
+++ b/zzip/CMakeLists.txt
@@ -35,6 +35,11 @@ else()
option(ZZIP_LIBLATEST "Ensure libname.lib links to libname-REL.lib" OFF)
endif()
+if(OHOS)
+set(ZZIP_COMPAT OFF)
+set(ZZIP_PKGCONFIG OFF)
+endif()
+
# used in zzip/_config.h
set(ZZIP_PACKAGE "${PROJECT_NAME}lib")
set(ZZIP_VERSION "${PROJECT_VERSION}")
@@ -359,7 +364,7 @@ if(ZZIP_LIBTOOL)
${outdir}/${lib}${libname}${librelease}${dll}.12
DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif(ZZIPMMAPPED)
- endif(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG)
+ endif(BUILD_SHARED_LIBS AND CMAKE_SHARED_LIBRARY_SONAME_C_FLAG)
endif(ZZIP_LIBTOOL)
if(ZZIP_LIBLATEST)
进入CMD,在源码所在的目录下,执行如下命令:
call ohos_build.cmd
等待项目编译结束。
CMakeLists.txt有编码错误,导致配置项目的时候存在告警,不过不影响项目的编译。
D:\workspace\CODE\zziplib>call ohos_build.cmd
cmake version 3.26.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
1.11.1
-- found sizeof(off_t/32)=8 and sizeof(off_t/64)=8
CMake Warning (dev) in zzip/CMakeLists.txt:
A logical block opening on the line
D:/workspace/CODE/zziplib/zzip/CMakeLists.txt:336 (if)
closes on the line
D:/workspace/CODE/zziplib/zzip/CMakeLists.txt:367 (endif)
with mis-matching arguments.
This warning is for project developers. Use -Wno-dev to suppress it.
使用OHOS SDK构建zziplib的更多相关文章
- Eclips+ADT+SDK构建android开发环境及android自动化测试开发环境
一. 需要用到的包: 1.adt-bundle-windows-x86_64-20140702.zip+JDK+ant 2.ant下载地址:http://ant.apache.org/bindownl ...
- 使用声网 SDK 构建 Piloteer 助盲服务平台的最佳实践
前言 在今年声网主办的「RTE2022 编程挑战赛」中,数支队伍经过一个多月的努力开发,很多优秀的作品最终突出重围,斩获大奖.本文由RTE2022编程挑战赛获奖者之一李新春撰写,他主要围绕获奖作品「P ...
- Eclipse SDK构建J2EE开发环境
鄙视官Java EE Developers 体积庞大的兄弟们可以提出自己的J2EE开发环境! 1.第一次去Eclipse官网下载Eclipse IDE 我使用的是:Eclipse IDE for Ja ...
- .NET 7 SDK 开始 支持构建容器化应用程序
微软于 8 月 25 日在.NET官方博客上,.NET 7 SDK 将包括对创建容器化应用程序的支持,作为构建发布过程的一部分,从而绕过需要.显式 Docker 构建阶段. 这一决定背后的基本认知是简 ...
- 阿里云 OCS SDK for NodeJS介绍
阿里云 OCS SDK for NodeJS介绍 阿里云技术团队:熊亮 阿里云 SDK for NodeJS 是为 NodeJS 开发者提供使用阿里云各项服务的统一入口,由阿里云UED团队负责开发维护 ...
- eclipse构建maven+scala+spark工程
前提条件 下载安装Scala IDE build of Eclipse SDK 构建工程 1.新建maven工程 2.配置项目信息 3.新建scala对应的Source Folder 4.添加scal ...
- Android官方技术文档翻译——新构建系统概述
本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...
- Android官方技术文档翻译——开发工具的构建概述
本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Chec ...
- Android SDK Mangaer 需要下载的组件
以 Windows 下为例,安装完 Android SDK 后,可以看到 SDK 的目录结构如下: 其中: SDK Manager.exe 是 Android SDK 的管理工具, AVD Manag ...
- 如何使用SDK在Ubuntu设备(包括仿真器和桌面)上运用应用程序
简介 有三种运行通过SDK创建的应用程序的方式:在桌面上,在联网的Ubuntu设备上,以及在仿真器中.这些方式为互补性方式,因为各有优缺点.您首先将了解如何管理SDK的设备类型,以及哪一个类型用于测试 ...
随机推荐
- fastdfs存储和下载过程
- Kotlin 协程五 —— 在Android 中使用 Kotlin 协程
目录 一.Android MVVM 结构 二.添加依赖 三.在后台线程中执行 3.1 协程解决了什么问题 3.2 保证主线程安全 3.3 withContext 的性能 四.结构化并发 4.1 追踪协 ...
- Vue源码学习(十一):计算属性computed初步学习
好家伙, 1.Computed实现原理 if (opts.computed) { initComputed(vm,opts.computed); } function initComputed(v ...
- 【Azure Key Vault】使用Azure CLI获取Key Vault 机密遇见问题后使用curl命令来获取机密内容
问题描述 在使用Azure Key Vault的过程中,遇见无法获取机密信息,在不方便直接写代码的情况下,快速使用Azure CLI指令来验证当前使用的认证是否可以获取到正确的机密值. 使用CLI的指 ...
- 【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)
问题描述 为Azure App Service添加访问限制,需要Python Azure SDK来实现的示例代码. 问题解答 查阅Azure App Service的官方资料,使用Python SDK ...
- 【Azure 媒体服务】记使用 Media Service 的官网示例代码 Audio Analyzer 出现卡顿在 Creating event processor host .. 直到 Timeout 问题
问题描述 在使用Azure Media Service的官网示例 (media-services-v3-java --> AudioAnalytics --> AudioAnalyzer ...
- 【Azure 环境】Azure应用程序网关设置set_Cookie=key=value; SameSite=Strict; HTTPOnly,AzureAD登录使用cookie时使用不了的案例记录
问题描述 Azure应用程序网关设置 set_Cookie=key=value; SameSite=Strict; HTTPOnly,AzureAD 登录使用cookie时使用不了. 分析过程 重写网 ...
- Twitter推特 api接口 获取trending趋势搜索关键词 python数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Twitter公开数据采集API,供用户按需调用. 接口使用详情请参考Twitter接口文档 ...
- pandas plot函数:数据可视化的快捷通道
一般来说,我们先用pandas分析数据,然后用matplotlib之类的可视化库来显示分析结果.而pandas库中有一个强大的工具--plot函数,可以使数据可视化变得简单而高效. 1. plot 函 ...
- 如何下载RTMP/http直播源直播视频(比尔下载器使用完整教程)
之前已经介绍了如何抓取各种app直播源及在线视频地址,本节内容将详细介绍如何下载rtmp/http直播源的直播视频,请注意,rtmp/http指协议,不针对任何app,凡是使用了以上协议的基本原理一样 ...