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

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


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

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

    qmake -config release
    mingw32-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 release
    make
    
  2. 使用 linuxdeployqt

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

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

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

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

    qmake -config release
    make
    
  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进阶专栏

你可能感兴趣的:(Qt基础,qt,c++,开发语言)