登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
资源区
›
代码
›
CMake构建学习笔记11-minizip库的构建
CMake构建学习笔记11-minizip库的构建
[ 复制链接 ]
蚣澡
2025-6-4 19:34:23
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
准确来说,minizip其实是zlib提供的辅助工具,位于zlib库的contrib文件夹内。minizip提供了更为高级一点的接口,能直接操作文件进行压缩。不过,有点麻烦的是这个工具并没有提供CMake构建的方式。那么可以按照构建giflib的方式,自己组织CMakeList.txt,正好这个项目的代码量并不多。
另一个问题是,minizip其实是个可执行程序,Windows下不能直接将其构建成动态链接库,因为Windows下的动态链接库是需要设置导出的,否则就会提示找不到符号的问题。这种情况下最简便的方式就是将其组织成静态库了(项目地址),CMakeList.txt如下所示:
# 输出cmake版本提示
message(STATUS "The CMAKE_VERSION is ${CMAKE_VERSION}.")
# cmake的最低版本要求
cmake_minimum_required (VERSION 3.10)
# 工程名称、版本、语言
project(minizip VERSION 5.2.2)
# 支持当前目录
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# 判断编译器类型
message("CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
# 判断编译器类型
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
message(">> using Clang")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
message(">> using GCC")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
message(">> using Intel C++")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message(">> using Visual Studio C++")
add_compile_options(/utf-8 /wd4996)
else()
message(">> unknow compiler.")
endif()
# 查找 ZLIB 模块
find_package(ZLIB REQUIRED)
# 源代码文件
set(PROJECT_SOURCES ioapi.c iowin32.c miniunz.c minizip.c mztools.c unzip.c zip.c)
set(PROJECT_HEADER crypt.h ioapi.h iowin32.h mztools.h unzip.h zip.h)
# 将源代码添加到此项目的可执行文件。
add_library(${PROJECT_NAME} STATIC ${PROJECT_SOURCES} ${PROJECT_HEADER})
#
target_link_libraries(${PROJECT_NAME} ZLIB::ZLIB)
# TODO: 如有需要,请添加测试
# 安装头文件到 include 目录
install(FILES ${PROJECT_HEADER} DESTINATION include/${PROJECT_NAME})
# 安装库文件到 lib 目录
install(TARGETS ${PROJECT_NAME}
LIBRARY DESTINATION lib # 对于共享库
ARCHIVE DESTINATION lib # 对于静态库
RUNTIME DESTINATION bin # 对于可执行文件
)
复制代码
关键的构建指令如下所示:
# 配置CMake
cmake .. -G "$Generator" -A x64 `
-DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo `
-DCMAKE_PREFIX_PATH="$InstallDir" `
-DCMAKE_INSTALL_PREFIX="$InstallDir"
# 构建阶段,指定构建类型
cmake --build . --config RelWithDebInfo
# 安装阶段,指定构建类型和安装目标
cmake --build . --config RelWithDebInfo --target install
复制代码
在最后谈谈动态库和静态库的问题。动态库和静态库各有优缺点,这里就不细致的论述了。但是在Windows下笔者还是倾向于优先使用动态库。一直以来,二进制兼容的问题一直是困扰C/C++编程的重要问题。比如说,你用VS2010编译的动态库在VS2013的环境下可能是无法使用的,这还是同一家产品的不同版本就会造成这个二进制成果的差异性问题。但是,根据Microsoft提供的文档(参看:https://learn.microsoft.com/zh-cn/cpp/porting/binary-compat-2015-2017 ),VS2015以后的版本就会开始提供二进制兼容的特性了,原理是标准库、运行时库(如 msvcp140.dll)、C++ 标准库保证了ABI(二进制接口)的稳定。笔者也确实发现很多产品的MSVC的预编译成果能够在MSVC环境中混用了。比如VS2017编译的Qt就能够在VS2019的环境下正常使用。不过这些能混用的成果一般都是动态库,也就是动态库的二进制兼容特性更好一点。至于静态库,文档中宣称静态库也可以做到,但是笔者实测至少这个基于VS2017的minizip静态库在VS2019中用不了。这一点就留待以后解决了。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
构建
CMake
学习
笔记
minizip
相关帖子
基于深度学习的水表读数识别系统演示与介绍
基于深度学习的安全帽检测系统演示与介绍
LangGraph4j 学习系列(1)-顺序工作流
凸优化数学基础笔记(三):方向导数、梯度向量
AI 学习笔记:Agent 的基础应用
凸优化数学基础笔记(四):Hessian 矩阵及 Taylor 展开
Stanford-CS336-Lecture-01 学习理解
凸优化数学基础笔记(五):极小值点的判定条件
凸优化数学基础笔记(六):凸集、凸函数与凸规划
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
基于深度学习的水表读数识别系统演示与介绍
1
401
晾棋砷
2026-02-16
安全
基于深度学习的安全帽检测系统演示与介绍
1
616
俏襟选
2026-02-16
安全
LangGraph4j 学习系列(1)-顺序工作流
2
454
夔新梅
2026-02-16
业界
凸优化数学基础笔记(三):方向导数、梯度向量
0
978
蝙俚
2026-02-17
业界
AI 学习笔记:Agent 的基础应用
0
336
倡遍竽
2026-02-18
业界
凸优化数学基础笔记(四):Hessian 矩阵及 Taylor 展开
0
890
姜删懔
2026-02-19
业界
Stanford-CS336-Lecture-01 学习理解
0
990
时思美
2026-02-19
业界
凸优化数学基础笔记(五):极小值点的判定条件
0
755
党新苗
2026-02-19
业界
凸优化数学基础笔记(六):凸集、凸函数与凸规划
0
518
士沌
2026-02-20
回复
(20)
少屠
2025-10-9 04:18:06
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢发布原创作品,程序园因你更精彩
崆蛾寺
2025-10-27 02:39:07
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
赖琳芳
2026-1-9 10:41:04
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,学习下。
圄旧剖
2026-1-15 02:31:44
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
yyds。多谢分享
艾晓梅
2026-1-17 02:40:06
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
不错,里面软件多更新就更好了
凉砧掌
2026-1-17 03:41:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享
寨重
2026-1-18 21:57:58
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
陆菊
2026-1-20 18:30:26
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
屠焘
2026-1-29 16:56:22
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,辛苦了
亢安芙
2026-2-5 07:43:17
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
喜欢鼓捣这些软件,现在用得少,谢谢分享!
锄淫鲷
2026-2-5 19:01:02
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
嗳诿
2026-2-10 04:34:48
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
钤凑讪
2026-2-10 05:03:57
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
户烫擞
2026-2-10 19:59:21
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
东西不错很实用谢谢分享
山芷兰
2026-2-10 20:33:24
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
轩辕娅童
2026-2-10 21:45:43
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
很好很强大 我过来先占个楼 待编辑
勺缓曜
2026-2-10 22:04:55
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
汹萃热
7 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
伯斌
7 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
蚣澡
7 天前
关注
0
粉丝关注
32
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9898
6
韶又彤
9918
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9883
10
遗憩
10006
查看更多
今日好文热榜
694
手把手教你使用vscode开发stm32!
999
“老东西,你懦弱了”——关于Vibe Coding
924
告别Hyprland/Niri键鼠共享难题:Pynergy
749
解惑|公司员工健身房需要哪些器材?上海皓
516
凸优化数学基础笔记(六):凸集、凸函数与
389
SeeDance2.0提示词之跳舞女孩
11
SeeDance2.0提示词之跳舞女孩
682
国内零门槛首个免费 开源 7×24小时帮
572
[拆解LangChain执行引擎]非常规Pending Wri
68
AI开发-python-milvus向量数据库(2-8 -mil
79
[LKD/Linux 内核] 关于对 current_thread_i
8
[LKD/Linux 内核] 关于对 current_thread_i
7
[LKD/Linux 内核] 关于对 current_thread_i
539
杂题选做(3)
7
9、PipedInputStream和PipedOutputStream的
755
凸优化数学基础笔记(五):极小值点的判定
858
【节点】[MainLightRealtimeShadow节点]原