> 技术文档 > 【Qt】Qt 程序打包指南(Windows/Linux/macOS)_qt打包命令

【Qt】Qt 程序打包指南(Windows/Linux/macOS)_qt打包命令


Qt 程序打包指南(Windows/Linux/macOS)


一、核心工具
  1. windeployqt (Windows)
  2. linuxdeployqt (Linux)
  3. macdeployqt (macOS)

二、Windows 打包步骤
  1. 编译 Release 版本

    qmake -config releasemingw32-make release # MinGW# 或 MSVC 使用对应构建工具
  2. 使用 windeployqt 收集依赖

    cd /d [编译输出目录]windeployqt --compiler-runtime [程序名].exe
    • 关键参数
      • --no-translations:跳过多余翻译文件
      • --no-system-d3d-compiler:跳过系统D3D编译器
      • --no-angle:禁用ANGLE(若不需要OpenGL ES)
  3. 手动补充内容

    • 第三方 DLL(如 OpenSSL、数据库驱动)
    • 资源文件(图片、配置文件等)
    • Qt5Core.dll 可能需额外复制(某些 Qt 版本问题)
  4. 验证依赖

    • 使用 Dependency Walker 检查缺失 DLL
  5. 生成安装包(可选):

    • 推荐工具:Inno Setup / NSIS

三、Linux 打包步骤
  1. 编译 Release 版本

    qmake -config releasemake
  2. 使用 linuxdeployqt

    ./linuxdeployqt [程序名] -appimage
    • 或生成独立目录:
      ./linuxdeployqt [程序名] -no-strip -bundle-non-qt-libs
  3. 解决常见问题

    • 缺失库错误:手动安装 libxcb-* 等依赖
    • AppImage 打包
      ./linuxdeployqt [程序名] -appimage -extra-plugins=platforms,iconengines
  4. 手动打包方案

    mkdir packagecp [程序名] package/ldd [程序名] | grep \"=> /\" | awk \'{print $3}\' | xargs -I{} cp -L {} package/

四、macOS 打包步骤
  1. 编译并生成 .app

    qmake -config releasemake
  2. 使用 macdeployqt

    macdeployqt [程序名].app -dmg -always-overwrite
    • 关键参数
      • -dmg:生成 DMG 镜像
      • -verbose=3:显示详细过程
  3. 处理签名问题(发布商店必需):

    codesign --deep --force --verify --verbose --sign \"Developer ID\" [程序名].app

五、通用优化技巧
  1. 减小体积

    • 删除 *.debug 文件
    • 移除无用 Qt 模块(sql, multimedia 等)
    • 使用 UPX 压缩可执行文件(谨慎使用)
  2. 资源管理

    • 将资源文件编译进 QRC(避免散落文件)
    • 动态加载翻译文件:
      QTranslator translator;translator.load(\":/translations/app_zh.qm\");qApp->installTranslator(&translator);
  3. 路径兼容

    // 获取程序所在目录(避免绝对路径)QString appDir = QCoreApplication::applicationDirPath();
  4. 依赖检查清单

    • Qt5Core.dll / .dylib / .so
    • 平台插件(platforms/qwindows.dll 等)
    • ICU 数据文件(icudt*.dll
    • OpenSSL 库(如 libcrypto, libssl

六、跨平台打包方案
  • 高级工具推荐
    • Qt Installer Framework:官方安装包工具
    • CMake + CPack:自动化打包
    • PyInstaller(适用于 PyQt)

七、验证流程
  1. 纯净虚拟机中测试
  2. 检查:
    • 文件路径大小写(Linux/macOS 敏感)
    • 缺失图标/翻译
    • 权限问题(Linux/macOS)
    • 控制台报错(运行前打开终端观察输出)

推荐阅读

  • C++专栏
  • 设计模式专栏
  • Qt进阶专栏