Windows 下 Qt Installer Framework 源码编译

三个大步骤:

  1. Qt 源码静态编译
  2. 配置静态库
  3. Qt Installer Framework 源码编译

1. Qt 静态编译

通过安装器安装的 Qt ,只有动态链接库版本,不适用于 Qt Installer Framework 的编译。需要自己从源码构建出静态库。

以下步骤完全参考 Qt Wiki,英文过关的可以直接阅读原文。

1.1 编译环境

1.2 下载并修改 PowerShell 脚本

下载 qt-windows10-static-build.ps1 这个 PowerShell 脚本,具体的构建过程全在脚本里。

1.2.1 打开脚本文件,并定位到

1
$QtStaticDir = "C:\Qt\Static", # NO TRAILING SLASH

所在行。此变量表示编译输出目录,改成你的自定义目录。

1.2.2 定位到

1
$GccList = @(Get-ChildItem -Path C:\Qt\Tools\mingw*\bin\gcc.exe

所在行,将 Path 值改为你的 Qt 安装目录下的相应路径。

1.2.3 定位到

1
cmd /c "configure.bat

所在行:

  • -skip qtdeclarative 选项删掉,Qt Installer Framework 依赖 Qml 库;
  • -qt-webp 选项后边添加 -qt-tiff 选项,Qt Installer Framework 同样依赖 tiff 图片格式库。

1.3 编译

右键 PowerShell 脚本,弹出菜单里选择 “使用 PowerShell 运行”,编译开始。

耗时较长(数小时计),耐心等待。

编译完成后,在自定义的输出目录下会出现一个 $QT_VERSION 命名的文件夹,在 $QT_VERSION\lib 目录下可以看到所有的 .a 文件。

2. Qt Creator 配置 Qt 静态库。

以下步骤完全参考 Qt Wiki,英文过关的可以直接阅读原文。

  1. 打开 Qt Creator
  2. 工具菜单->选项
  3. 选中左边 Kits 选项页,选择 Qt Versions 标签页。
  4. 点击添加按钮,选中上一步编译出的 qmake.exe 文件,即 $QT_VERSION\bin\qmake.exe。可以看到 Manual 树下多了一行,可以选中它,给它取一个更有识别度的版本名称,比如 Qt %{Qt:Version} MinGW Static 64bit
  5. 点击应用按钮。
  6. 选择 Kits 标签页。
  7. Manual 树下应该会自动添加一行,对应上边步骤的 Qt 版本(如果没有自动添加,可以点击 Add 按钮,选中新行,点击下边列表的名称一行右边图标,下拉菜单里选择上一步骤 Qt 版本,完成手动添加。)。
  8. 修改列表中 Compiler 一栏,将 C/C++ 编译器分别改为 MinGW 8.1.0 64-bit for C、MinGW 8.1.0 64-bit for C++。

3. Qt Creator 中编译 Qt Installer Framework

下载 QtIFW 源码:https://github.com/LiangZuoting/installer-framework.git

Qt Creator 中通过源码根目录下 installerfw.pro 文件打开工程。

打开 installerbase.rc 文件,将 13 行

1
VALUE "FileVersion", IFW_VERSION_STR_WIN32

改为

1
VALUE "FileVersion", "4.0.1"

具体的版本号依你自己情况而定,且要记得更新版本号时同步修改此处。

这是一个已知 BUG,一直没有修复。

然后就可以编译了。数分钟后,在 QtIFW 源码根目录下会多一个 bin 目录,里边是输出文件。

参考

  1. Building a static Qt for Windows using MinGW: https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW

评论