当前位置: 首页 > news >正文

【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录

  • 一、zlib介绍
  • 二、文件下载
  • 三、文件分析
  • 四、pro文件
  • 五、编译实践

一、zlib介绍

zlib是一套通用的解压缩开源库,提供了内存(in-memory)压缩和解压函数。zlib是一套通用的解压缩开源库,提供了内存(in-memory)压缩和解压函数。
zlib能检测解压出来的数据完整性,由Jean-loup Gailly与Mark Adler所开发。最新版本为1.2.12。
zlib初版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。


二、文件下载

zlib网址:
https://www.zlib.net/
在这里插入图片描述
获取zlib-1.2.12.tar.gz文件。


三、文件分析

解压缩zlib-1.2.12文件
文件夹下有CMakeLists.txt文件:
在这里插入图片描述
文件中,标识了相应的头文件、库文件,以及预定义项等信息:
在这里插入图片描述
关键的预定义项信息:

在这里插入图片描述


四、pro文件

考虑到linux、macos下 lseek等函数的调用,修改了gzguts.h文件:
在这里插入图片描述

配置头文件:

#头文件
HEADERS +=  zconf.h \zlib.h \crc32.h \deflate.h \gzguts.h \inffast.h \inffixed.h \inflate.h \inftrees.h \trees.h \zutil.h

配置源文件:

#源文件
SOURCES +=  adler32.c \compress.c \crc32.c \deflate.c \gzclose.c \gzlib.c \gzread.c \gzwrite.c \inflate.c \infback.c \inftrees.c \inffast.c \trees.c \uncompr.c \zutil.c

设置预定义项:

DEFINES += ZLIB_DLL NO_FSEEKO
DEFINES -= UNICODEwin32 {DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
}

形成002.zlib-1.2.12.pro文件:

QT += coreTEMPLATE = lib
CONFIG += c++17DESTDIR = ../QGIS
CONFIG(debug, debug|release){MOC_DIR = ../build-QGIS/zlib/Debug/mocRCC_DIR = ../build-QGIS/zlib/Debug/rccUI_DIR = ../build-QGIS/zlib/Debug/uiOBJECTS_DIR = ../build-QGIS/zlib/Debug/obj
}else{MOC_DIR = ../build-QGIS/zlib/Release/mocRCC_DIR = ../build-QGIS/zlib/Release/rccUI_DIR = ../build-QGIS/zlib/Release/uiOBJECTS_DIR = ../build-QGIS/zlib/Release/obj
}CONFIG(debug, debug|release){TARGET = zlibd
}else{TARGET = zlib
}
DEFINES += ZLIB_DLL NO_FSEEKO
DEFINES -= UNICODEwin32 {DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
}# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0#当前目录
INCLUDEPATH += ./#头文件
HEADERS +=  zconf.h \zlib.h \crc32.h \deflate.h \gzguts.h \inffast.h \inffixed.h \inflate.h \inftrees.h \trees.h \zutil.h
#源文件
SOURCES +=  adler32.c \compress.c \crc32.c \deflate.c \gzclose.c \gzlib.c \gzread.c \gzwrite.c \inflate.c \infback.c \inftrees.c \inffast.c \trees.c \uncompr.c \zutil.c# Default rules for deployment.
#unix {
#    target.path = /usr/lib
#}
#!isEmpty(target.path): INSTALLS += target

五、编译实践

用QtCreator程序,打开002.zlib-1.2.12.pro文件。
在这里插入图片描述
在windows下编译,形成:
在这里插入图片描述

在linux下编译,形成:
在这里插入图片描述

在macos下编译,形成:
在这里插入图片描述

相关文章:

  • Electron中苹果支付 Apple Pay inAppPurchase 内购支付
  • vue3中Fragment特性的一个bug,需要留意的注意事项
  • redis-exporter grafana面板配置
  • linux SSH/Telnet/Shell/CMD终端软件之WindTerm
  • 定时获取微博热搜数据
  • 《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型
  • 深度学习模型之yolov8实例分割模型TesorRT部署-python版本
  • Dell戴尔XPS 8930笔记本电脑原装Win10系统 恢复出厂预装OEM系统
  • c JPEG 1D DCT 优化1
  • Camera基础原理与畸变补偿
  • Webpack5入门到原理22:提升打包构建速度
  • EtherNet/IP开发:C++开发CIP源代码
  • 9-数组- 除自身以外数组的乘积
  • 开发实战角度:distinct实现原理及具体优化总结
  • 【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • [deviceone开发]-do_Webview的基本示例
  • 「译」Node.js Streams 基础
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 4个实用的微服务测试策略
  • CSS相对定位
  • js
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Vue 重置组件到初始状态
  • Vue2 SSR 的优化之旅
  • vuex 笔记整理
  • vuex 学习笔记 01
  • Vue组件定义
  • 从零开始在ubuntu上搭建node开发环境
  • 从重复到重用
  • 排序(1):冒泡排序
  • 使用agvtool更改app version/build
  • 微信开源mars源码分析1—上层samples分析
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # 安徽锐锋科技IDMS系统简介
  • #ifdef 的技巧用法
  • #QT(串口助手-界面)
  • (C语言)fread与fwrite详解
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (六)软件测试分工
  • (学习日记)2024.01.09
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)Windows2003安全设置/维护
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 5种线程安全集合
  • .net CHARTING图表控件下载地址
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET Core中Emit的使用
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net中间语言BeforeFieldInit
  • .skip() 和 .only() 的使用
  • .so文件(linux系统)
  • /deep/和 >>>以及 ::v-deep 三者的区别