Stay up to date with the latest marketing, sales and service tips and news.
本文翻译自Qt is relocatable
原文作者:Jörg Bornemann
校审:Richard Lin
从5.14.0版开始,Qt安装文件可以随意移动,也就是说,可以将Qt安装文件移动到其他目录下,而不会破坏已有的功能或加载的插件。
假如您负责一个Windows项目Qt库的构建。您精通所有的配置参数。您很清楚要打开哪个优化选项、关闭哪些不需要的功能。您的Qt构建是根据项目量身定制的,最后你提供了Qt安装包的zip文件。
您运行了
configure -prefix C:/Qt/5.12.6 ...more options...
jom
jom install
zip -r X:\shared_stuff\qt-5.12.6.zip C:\Qt\5.12.6
然后,您的同事将存档文件解压缩到完全相同的位置,一切都正常工作。
现在,出于某种原因,开发者必须将Qt安装文档解压缩到其他驱动器或者目录下。
不同目录下的Qt功能失效,QMake不能正常工作,插件也无法加载,也无法找到Qt素材。
在过去的版本中,Qt的配置会将安装路径编入qmake可执行文件和Qt5Core库中。QLibraryInfo中的程序试图在硬编码的前缀下面找到插件、素材和mkspecs,而这个前缀是用户configure时用-prefix参数输入的。
是的,从Qt 5.14.0开始,安装前缀可以自动根据Qt5Core库或可执行文件本身路径来确定,而不依赖于硬编码的路径。
当Qt使用可移动方式配置时,这一过程就可以自动化完成了。
除了Qt的静态构建,该特性默认是打开的。
如果您需要一个可移动的静态构建,则需要手动开启该功能:
configure -static -feature-relocatable ...
可移动静态构建的注意事项是,Qt内部不会自动连接翻译文件。
您必须同时部署Qt的翻译文件和应用程序。
与不可移动的构建的的差异是,在静态构建中,可移动的选项是默认关闭的。
是的,您当然可以。
configure -no-feature-relocatable ...
将遵循老的处理方式。
例如,Linux发行版不需要可移动的Qt,因此可以关闭该功能。
QTBUG-14150可以跟踪原始提出的问题。
在qtbase代码中的提交4ac872639ed0dd3ae6627e05bdda821f7d128500,介绍了可移动功能。
Stay up to date with the latest marketing, sales and service tips and news.
Download the latest release here: www.qt.io/download.
Qt 5.12 was developed with a strong focus on quality and is a long-term-supported (LTS) release that will be supported for 3 years.
Find webinars, use cases, tutorials, videos & more at resources.qt.io
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
Qt Group includes The Qt Company Oy and its global subsidiaries and affiliates.