【Qt】Qt 程序打包指南(Windows/Linux/macOS)_qt打包命令
Qt 程序打包指南(Windows/Linux/macOS)
一、核心工具
windeployqt
(Windows)linuxdeployqt
(Linux)macdeployqt
(macOS)
二、Windows 打包步骤
-
编译 Release 版本
qmake -config releasemingw32-make release # MinGW# 或 MSVC 使用对应构建工具
-
使用 windeployqt 收集依赖
cd /d [编译输出目录]windeployqt --compiler-runtime [程序名].exe
- 关键参数:
--no-translations
:跳过多余翻译文件--no-system-d3d-compiler
:跳过系统D3D编译器--no-angle
:禁用ANGLE(若不需要OpenGL ES)
- 关键参数:
-
手动补充内容:
- 第三方 DLL(如 OpenSSL、数据库驱动)
- 资源文件(图片、配置文件等)
Qt5Core.dll
可能需额外复制(某些 Qt 版本问题)
-
验证依赖:
- 使用 Dependency Walker 检查缺失 DLL
-
生成安装包(可选):
- 推荐工具:Inno Setup / NSIS
三、Linux 打包步骤
-
编译 Release 版本
qmake -config releasemake
-
使用 linuxdeployqt
./linuxdeployqt [程序名] -appimage
- 或生成独立目录:
./linuxdeployqt [程序名] -no-strip -bundle-non-qt-libs
- 或生成独立目录:
-
解决常见问题:
- 缺失库错误:手动安装
libxcb-*
等依赖 - AppImage 打包:
./linuxdeployqt [程序名] -appimage -extra-plugins=platforms,iconengines
- 缺失库错误:手动安装
-
手动打包方案:
mkdir packagecp [程序名] package/ldd [程序名] | grep \"=> /\" | awk \'{print $3}\' | xargs -I{} cp -L {} package/
四、macOS 打包步骤
-
编译并生成 .app
qmake -config releasemake
-
使用 macdeployqt
macdeployqt [程序名].app -dmg -always-overwrite
- 关键参数:
-dmg
:生成 DMG 镜像-verbose=3
:显示详细过程
- 关键参数:
-
处理签名问题(发布商店必需):
codesign --deep --force --verify --verbose --sign \"Developer ID\" [程序名].app
五、通用优化技巧
-
减小体积:
- 删除
*.debug
文件 - 移除无用 Qt 模块(
sql
,multimedia
等) - 使用
UPX
压缩可执行文件(谨慎使用)
- 删除
-
资源管理:
- 将资源文件编译进 QRC(避免散落文件)
- 动态加载翻译文件:
QTranslator translator;translator.load(\":/translations/app_zh.qm\");qApp->installTranslator(&translator);
-
路径兼容:
// 获取程序所在目录(避免绝对路径)QString appDir = QCoreApplication::applicationDirPath();
-
依赖检查清单:
- Qt5Core.dll / .dylib / .so
- 平台插件(
platforms/qwindows.dll
等) - ICU 数据文件(
icudt*.dll
) - OpenSSL 库(如
libcrypto
,libssl
)
六、跨平台打包方案
- 高级工具推荐:
- Qt Installer Framework:官方安装包工具
- CMake + CPack:自动化打包
- PyInstaller(适用于 PyQt)
七、验证流程
- 在纯净虚拟机中测试
- 检查:
- 文件路径大小写(Linux/macOS 敏感)
- 缺失图标/翻译
- 权限问题(Linux/macOS)
- 控制台报错(运行前打开终端观察输出)
推荐阅读
- C++专栏
- 设计模式专栏
- Qt进阶专栏