【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/
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第1张图片
获取zlib-1.2.12.tar.gz文件。


三、文件分析

解压缩zlib-1.2.12文件
文件夹下有CMakeLists.txt文件:
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第2张图片
文件中,标识了相应的头文件、库文件,以及预定义项等信息:
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第3张图片
关键的预定义项信息:

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


四、pro文件

考虑到linux、macos下 lseek等函数的调用,修改了gzguts.h文件:
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第5张图片

配置头文件:

#头文件
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 -= UNICODE

win32 {
    DEFINES += _CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_DEPRECATE
}

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

QT += core

TEMPLATE = lib
CONFIG += c++17

DESTDIR = ../QGIS
CONFIG(debug, debug|release){
    MOC_DIR = ../build-QGIS/zlib/Debug/moc
    RCC_DIR = ../build-QGIS/zlib/Debug/rcc
    UI_DIR = ../build-QGIS/zlib/Debug/ui
    OBJECTS_DIR = ../build-QGIS/zlib/Debug/obj
}else{
    MOC_DIR = ../build-QGIS/zlib/Release/moc
    RCC_DIR = ../build-QGIS/zlib/Release/rcc
    UI_DIR = ../build-QGIS/zlib/Release/ui
    OBJECTS_DIR = ../build-QGIS/zlib/Release/obj
}

CONFIG(debug, debug|release){
    TARGET = zlibd
}else{
    TARGET = zlib
}
DEFINES += ZLIB_DLL NO_FSEEKO
DEFINES -= UNICODE

win32 {
    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文件。
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第6张图片
在windows下编译,形成:
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第7张图片

在linux下编译,形成:
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第8张图片

在macos下编译,形成:
【QT+QGIS跨平台编译】之二:【zlib+Qt跨平台编译】(一套代码、一套框架,跨平台编译)_第9张图片

你可能感兴趣的:(Qt+QGIS跨平台编译,zlib编译,zlib跨平台编译,qgis编译,qgis跨平台编译,zlib+qt,qgis+qt)