2020年,Qt公司(The Qt Company)宣布了一项重大政策调整:自Qt 5.15 LTS(长期支持)版本起,官方将不再为开源用户提供预编译的离线安装包。这项变革直接将开源用户的安装路径导向了以下两种方式:
而商业用户则不受此限制,依然可以下载离线安装包。这一变化在开发者社区内引发了广泛讨论,许多开发者认为,这不仅是出于降低多平台编译维护成本的考虑,也标志着Qt在商业化道路上迈出了更明显的一步。
本文将详细解析这次安装策略变革的背景,并为你提供从源码编译到在线安装器使用技巧,再到企业级离线部署的完整解决方案,帮助你在新常态下顺利完成Qt开发环境的搭建。
一、Qt安装策略的历史演变
1.1 Qt4 ~ Qt5.14:离线安装包时代
在Qt 5.14及之前的版本,无论开源还是商业用户,都能轻松地从Qt官网下载完整的离线安装包(例如 qt-opensource-windows-x86-5.14.2.exe)。这种安装包通常包含了:
- 多个Qt版本(如5.9, 5.12, 5.14等)
- 多种编译套件(MSVC, MinGW, Android, iOS等)
- Qt Creator IDE
- 完整的文档与示例
优点非常明显:
- 一次下载,永久可用。
- 无需网络即可随时安装或重装。
- 非常适合内网或网络受限的开发环境。
1.2 Qt 5.15+:在线安装器主导时代
但从Qt 5.15开始,情况发生了变化。开源用户访问Qt官网下载页面时,只能下载一个体积约为30MB的轻量级“在线安装器”。这个安装器启动后必须登录Qt账户,并且需要保持网络连接才能从服务器动态下载你选择的组件。
🔒 关键限制:
- 开源账户无法下载Qt 5.15及之后版本的离线安装包。
- 在线安装器要求你的Qt账户绑定GitHub或GitLab账号,用以验证你的开源开发者身份。
二、变革背后的动因分析
2.1 官方解释:降低维护成本
Qt官方给出的理由是现实的:Qt需要支持数十种平台和编译器的组合(Windows/Linux/macOS + MSVC/MinGW/GCC/Clang + x86/x64/ARM + Android/iOS等)。为每个LTS版本维护所有组合的预编译包,其测试、构建和分发的成本确实极高。
2.2 深层原因:用户行为数据与商业化
然而,正如开发者社区中的普遍推测,这一转变背后还有更深层的商业考量。通过在线安装器,Qt公司能够:
- 追踪用户数量与分布(地域、平台、版本偏好),获取更精确的市场数据。
- 推动账户体系绑定,增强用户与官方平台的粘性。
- 为商业服务和模块导流,例如在安装过程中推荐Qt for Automation、Qt Safe Renderer等商业产品。
事实也印证了这一点:自Qt 5.15起,商业模块的推广力度明显加大,同时开源版本的功能更新周期似乎也在缩短。
三、对开发者的影响
| 场景 |
影响 |
| 个人开发者 |
需要注册账户,且安装过程必须依赖网络。 |
| 企业内网开发 |
无法直接使用在线安装器,需要寻找代理或离线解决方案。 |
| CI/CD自动化构建 |
无法直接下载预编译包,需要自行编译或在构建环境中缓存。 |
| 教学/培训环境 |
批量、快速部署变得困难。 |
四、解决方案一:使用在线安装器(推荐日常开发)
4.1 下载与安装步骤
- 访问 https://www.qt.io/download
- 下载 Qt Online Installer
- 安装时选择 “Open Source” 许可证
- 使用GitHub/GitLab账户登录(系统会检查你是否拥有公开仓库来证明开发者身份)
- 在组件选择界面勾选所需版本(例如 Qt 5.15.2 → MinGW 8.1.0 64-bit)
⚠️ 注意:Qt 5.15.2是最后一个官方支持Windows 7的版本。
4.2 创建离线安装副本(重要!)
虽然无法直接下载离线安装包,但你可以将在线安装后的整个Qt目录打包,用作其他机器的离线部署源:
# 假设在线安装到 C:\Qt
# 打包整个Qt目录(包含Qt Creator、工具链、文档等)
tar -czf qt5152-offline-backup.tar.gz /path/to/Qt
将打包后的文件复制到目标机器并解压后,通常需要修复内部路径,具体方法见下文“离线部署”章节。
五、解决方案二:从源码编译Qt(适用于内网/定制需求)
如果你需要在内网环境使用,或者希望对Qt进行深度定制(如静态编译、裁剪模块),那么从源码编译是最佳选择。
5.1 获取源码
# 方法1:通过在线安装器下载源码包(推荐,最方便)
# 只需在在线安装器的组件选择界面勾选 “Sources” -> “Qt 5.15.2”
# 方法2:从官方Git仓库克隆(需要配置子模块)
git clone https://code.qt.io/qt/qt5.git
cd qt5
git checkout 5.15.2
perl init-repository
5.2 编译环境准备(以Windows + MinGW为例)
你需要提前安装好必要的工具:
- Perl 和 Python:Qt的配置脚本需要它们。
- MinGW-w64:选择与目标版本匹配的工具链。
5.3 配置与编译
进入源码目录,执行配置和编译命令。对于源码编译这种需求,一份清晰的编译指南至关重要。
# 进入源码目录
cd qt5
# 进行配置(这是一个精简版配置,仅编译必要模块)
configure -prefix C:\Qt\5.15.2\mingw81_64_custom \
-release \
-opensource \
-confirm-license \
-static \ # 可选:进行静态编译
-nomake examples \
-nomake tests \
-opengl desktop \
-platform win32-g++ \
-skip qtwebengine # 跳过编译非常耗时的WebEngine模块
# 开始编译(使用-j参数启用多线程以加速)
mingw32-make -j8
# 将编译好的文件安装到之前-prefix指定的目录
mingw32-make install
⏱️ 编译耗时提示: 在一台普通性能的PC上,完整的编译过程大约需要2到6小时,具体时间取决于你选择的模块数量和机器性能。
5.4 验证编译结果
编写一个简单的测试程序,并使用刚刚编译出来的qmake进行构建。
// test.cpp
#include <QApplication>
#include <QLabel>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QLabel label("Hello from compiled Qt 5.15!");
label.show();
return app.exec();
}
# 使用自编译的qmake生成Makefile并构建
C:\Qt\5.15.2\mingw81_64_custom\bin\qmake test.pro
mingw32-make
./test.exe
如果程序能成功运行并显示窗口,恭喜你,源码编译成功!
六、解决方案三:离线部署已安装的Qt(企业级方案)
如果你已经通过在线安装器在一台“母机”上安装好了Qt,可以将其完整地迁移到任何无网络环境的机器上。
6.1 打包步骤
- 复制整个Qt安装目录(例如
C:\Qt)。
- 复制Qt所依赖的工具链目录(例如MinGW)。
- (可选)打包Qt Creator的配置文件,以便统一开发环境。
6.2 修复路径(关键!)
Qt的很多二进制文件内部硬编码了原始的安装路径。搬迁后,最简单的修正方法是使用 qt.conf 文件。
; 在目标机器的 Qt\5.15.2\mingw81_64\bin\ 目录下创建或修改 qt.conf
[Paths]
Prefix=..
这个配置告诉Qt,所有相对路径都基于qt.conf文件所在目录的上一级开始计算。对于更复杂的搬迁,可以使用社区提供的 patchqt.py 等脚本进行批量路径替换。
6.3 部署脚本示例(Windows批处理)
你可以编写一个简单的脚本来快速设置目标机器的环境变量。
@echo off
set QT_DIR=D:\Qt
set PATH=%QT_DIR%\Tools\mingw810_64\bin;%QT_DIR%\5.15.2\mingw81_64\bin;%PATH%
echo Qt environment ready.
cmd /k
七、CI/CD中的自动化安装(GitHub Actions示例)
在持续集成/持续部署环境中,你可以利用现有的社区Action来自动化安装Qt。
# .github/workflows/build.yml
name: Build with Qt 5.15
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: '5.15.2'
target: 'desktop'
arch: 'win64_mingw81'
modules: 'qtcharts qtmultimedia'
- name: Build project
run: |
qmake myproject.pro
mingw32-make
✅ 这个 install-qt-action 会自动从Qt的在线源下载并安装指定组件,非常适合云端构建环境。
八、未来展望:Qt6与商业化趋势
- Qt6已全面采用在线安装模式,这一政策在Qt6时代已成为既定事实。
- 开源版本的功能逐渐落后于商业版,例如Qt Quick Compiler等性能优化工具仅限商业许可证使用。
- LTS支持周期对开源用户缩短,Qt 5.15 LTS对开源用户的支持已于2023年结束。
📌 给开发者的建议:
- 对于长期、关键的企业级项目,应认真评估商业许可证的价值。
- 对于希望保持稳定的系统,可以考虑锁定在Qt 5.15.2这个最后一个对开源用户相对“友好”的LTS版本。
- 积极参与开源实战与Qt开源社区,反馈需求,共同影响其开源部分的发展方向。
九、总结
为了方便你快速决策,这里将三种主要方案的优缺点对比如下:
| 方案 |
适用场景 |
优点 |
缺点 |
| 在线安装器 |
个人开发、有稳定网络的日常环境 |
简单快捷,官方直接支持 |
需要账户,强依赖网络 |
| 源码编译 |
内网环境、有深度定制或优化需求 |
完全可控,可裁剪优化 |
耗时很长,技术门槛较高 |
| 离线部署 |
企业批量部署、无网络环境 |
一次配置,多机复用 |
需手动修复路径,维护稍麻烦 |
核心结论:
Qt 5.15+ 的安装策略变革是当下开源软件商业化趋势的一个典型缩影。作为开发者,我们需要适应这种“在线优先”的新常态。同时,掌握源码编译与离线部署这两项技能,不再是可选项,而是保障项目开发自主权和应对复杂环境的关键能力。
正如一句开发者箴言所说:“你可以不经常自己编译Qt,但你必须知道如何编译Qt。”
最后提醒: 在使用Qt进行开发时,请务必遵守其开源许可证(LGPL/GPL)的要求,合理使用,共同维护健康的开源生态。