文章目录
- 一、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下编译,形成: