使用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的设备类型,以及哪一个类型用于测试 ...
随机推荐
- 【LeetCode贪心#01】分饼干,贪心算法入门(入了但是还没完全入)
分饼干 力扣题目链接(opens new window) 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子 ...
- 【Azure Function App】Java Function在运行中遇见内存不足的错误
问题描述 在Function的Code+Test界面进行函数触发可以成功.因为Function为Blob Trigger,当在Blob容器下上传文件后,Function可以被正常触发但是报 outof ...
- 【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
问题描述 在中国区微软云上创建Redis失败.收到的错误消息为: { "code": "DeploymentFailed", "message&quo ...
- 【对比】Gemini:听说GPT-4你小子挺厉害
前言 缘由 谷歌连放大招:Gemini Pro支持中文,Bard学会画画 事情起因: 一心只读圣贤书的狗哥,不经意间被新闻吸引.[谷歌最新人工智能模型Gemini Pro已在欧洲上市 将与ChatGP ...
- 【苹果】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
前言 缘由 Iphone15来了,两年之约你还记得吗? 遂整合之前iphone13及iphone14的相关抢购代码,完成一个SpringBoot监听Iphone15有货邮件提醒+python自动化脚本 ...
- .NET周刊【3月第1期 2024-03-03】
国内文章 推荐10款C#开源好用的Windows软件 https://www.cnblogs.com/Can-daydayup/p/18035760 DevToys.Microsoft PowerTo ...
- C语言之兔子生产问题
/#include <stdio.h> main() { long fib1 = 1, fib2 = 1, fib;//定义长整型变量,fib1表示当前前一个月的兔子数,fib2表示当前前 ...
- 将Abp移植进.NET MAUI项目(三):构建UI层
很开心,终于到了创建页面的时候了! 我们需要两个页面 MainPage 主页面 MusicItemPage 条目编辑页面 编写主页面 新建一个MainPageViewModel.cs,作为Main ...
- Zabbix“专家坐诊”第198期问答汇总
问题一 Q:请问一下,自带的思科SNMP交换机模板,怎么不监控down的接口? A1:这种一般在自动发现规则里加个过滤器,过滤出IFSTATUS匹配(1|3)的就能实现只发现up的端口了. A2: 1 ...
- @hook:updated="$common.lib.consoleInfo('updated')" vue外层插入监听事件
@hook:updated="$common.lib.consoleInfo('updated')" vue外层插入监听事件