【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下编译,形成:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422696.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

samba服务搭建,并将共享目录映射到windows

系统版本:centos7 1、centos 安装samba yum -y install samba 2、查看安装信息 rpm -qa |grep samba 3、设置开机自启动 systemctl enable smb.service systemctl enable nmb.service 4、设置samba服务器配置文件 sudo vi /etc/samba/smb.conf 注意&#…

java基础学习: 什么是泛型的类型擦除

文章目录 一、什么是泛型2、泛型编译前和编译后对比3、泛型的优点(1)提高了代码的复用性和可读性(2)提高了代码的安全性 二、泛型的定义1、泛型类2、泛型接口3、泛型方法 三、泛型通配符1、?和T有什么区别2、通配符的分…

Kong网关概述

介绍Kong网关 Kong Gateway是一个轻量级、快速且灵活的云原生API网关。API网关是一个反向代理,可以管理、配置和路由对API的请求。 Kong Gateway在任何RESTful API的前面运行,并且可以通过模块和插件进行扩展。它被设计用于在分散式架构中运行&#xf…

【webrtc】neteq测试工程

设置git代理 $ git config --global http.https://github.com.proxy socks5://127.0.0.1:7890 git config --global https.https://github.com.proxy socks5://127.0.0.1:7890导入cmake直接构建 win32 debug v143 编译opus Build started...

Linux部署nginx+appache动静分离

部署nginxappache动静分离 虚拟机配置到vm1网卡 地址192.168.1.100 重启网卡 关闭安全linux 关闭防火墙、 挂载磁盘 配置yum源 上传软件包 nginx和appache 配置appache服务 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar -xjf httpd-2.4.29.tar.bz2 mv a…

Kui: 一个用于 Kubernetes 的“混合”CLI/GUI 应用程序

众所周知,当涉及到管理服务器或 Kubernetes 集群之类的事情时,我们大多数人更喜欢使用我们心爱的终端而不是 GUI 工具。对于许多人来说,这就像驾驶一辆带有手动变速箱的汽车:简单、舒适、灵活且更可预测。Kui 是一个混合界面工具&…

大尺寸产品外径难实时测量?请看大直径测径仪系列!

在生产大口径螺旋焊管、无缝管材、直缝焊管等产品时,是否遇到过这样的问题,人工检测速度慢,精度低,易漏检,在线检测仪器又难以达到测量范围,或者价格过于昂贵。别急,我们的测径仪系列能为你解决…

java实现将集合数据导入excel表格之竖向

这里使用的是apache.poi,当然如果使用easyExcel也可以实现 括号是EasyExcel官网(EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel) 找到填充,都会有相对应的demo实列 下面是我写的apache.poi实现代码 public static vo…

Visual Studio 2022 成功配置QT5.12.10

目录 下载并安装Visual Studio 2022 Qt5.12.10下载 Qt5.12.10安装 Qt VS Tools for Visual Studio 2022下载 Visual Studio 2022配置 测试 下载并安装Visual Studio 2022 下载社区版并安装,这个比较快。 Qt5.12.10下载 官网下载很慢,还不如百度网…

退出微软账号,edge/必应退出账号

微软账号退出:搜的教程都是说改成本地帐号,但是我的已经是本地帐号,操作没用。 但是找到了退出edge/必应浏览器账号的方法,见下图。 参考链接:奶酪真好次个人动态-奶酪真好次动态记录-哔哩哔哩视频 (bilibili.com)

【LeetCode】每日一题 2024_1_21 分割数组的最大值(二分)

文章目录 LeetCode?启动!!!题目:分割数组的最大值题目描述代码与解题思路 LeetCode?启动!!! 今天是 hard,难受,还好有题解大哥的清晰讲解 题目&a…

接口自动化测试框架开发(pytest+allure+aiohttp+ 用例自动生成)

近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数量一般都很多,而且会越来越…