我找不到任何关于如何在 Windows 上安装 Qt 的信息。
在 wiki 文章How to setup shadow builds on Mac and Linux-prefix
中,脚本中有选项的描述,configure
但此选项在 Windows 上不可用。
我知道我可以直接从构建文件夹中使用 Qt,但不执行安装步骤似乎不是正确的事情。这种方法的一个问题是尺寸。Qt 的构建文件夹占用大约 4GB 空间,而使用二进制安装程序安装后 Qt 占用大约 1GB 空间。我想差异是由于在构建过程中创建的临时文件。我希望某些安装过程将安装(复制)只需要的文件,将临时文件留在构建文件夹中。
8 回答
正如 İsmail 所说,Windows 上没有 Qt 的安装步骤。但是,可以尝试通过执行以下操作来近似它。
- 清理
在构建文件夹中 运行make clean
以删除所有临时文件。 - 将
复制构建文件夹移动到您想要“安装”Qt 的位置。让我们称之为INSTALL_DIR
。 - 修复
qmake.exe
可执行文件
中硬编码的路径 运行qmake -query
以查看哪些路径被编译(硬编码)到 qmake 和
a. 通过将其替换为INSTALL_DIR
usingqmake -set
(1) 来修复包含构建文件夹的路径。
或
b。在其中指定新 Qt 路径qt.conf
的 bin 子文件夹中创建一个文件。INSTALL_DIR
- 添加当前目录以包含路径
在 Qt 提供的二进制发行版中,pwd 包含在 中QMAKE_INCDIR
,因此最终在您的项目中包含路径为“.”。这在自定义构建的 Qt 中默认不会发生,因此您必须将以下行添加到mkspecs/YOUR-PLATFORM-HERE/qmake.conf
文件中:
QMAKE_INCDIR += "."
- 修复
prl
文件
当您将 Qt 组件添加到项目文件(例如CONFIG += uitools
)时,Qt%QTDIR%/lib/QtUiTools.prl
会查找该组件的库依赖项。这些文件将具有配置和构建 Qt 的目录的硬编码路径。lib/*.prl
对于所有文件 ,您必须用您将 Qt 移动到的目录替换该构建目录。 - 使源可用
如果您进行了影子构建(在包含源的文件夹之外的文件夹中构建),include
子文件夹中的标题仅转发到原始标题。例如;BUILD_DIR\include\QtCore\qabstractanimation.h
看起来像这样
#include "SRC_DIR/src/corelib/animation/qabstractanimation.h"
如果您不想依赖包含源的文件夹的存在,则必须将子文件夹复制SRC_DIR/src
到目标文件夹并修复文件夹中的所有标题,include
以便它们转发到src
子文件夹的新位置。
底线:
Windows 下 Qt 的构建过程使得在构建后移动(安装)Qt 真的很尴尬。只有当……我找不到任何充分的理由来解决所有这些麻烦时,你才应该这样做。
记住
最简单的方法是将 Qt 的源代码放在构建后希望 Qt 保留的文件夹中,并在此文件夹中进行构建。这使得除了上面的 1 和 4 之外的所有步骤都是不必要的。
1)
您设置的变量qmake -set
保存在注册表项
HKEY_CURRENT_USER\Software\Trolltech\QMake\<QMAKE_VERSION>
中。
因此,当您想要使用不同版本的 Qt 的不同项目时,您可能会遇到问题,这些 Qt 恰好具有相同版本的 qmake。在这种情况下,更好的解决方案是使用qt.conf
文件(实际上是文件,因为每个 Qt 安装都需要一个文件)(选项 3b)。
上面的许多信息来自Gabe Rudy 创作的RelocationTricks wiki 页面。查看他的Qt (Qt4) Opensource Windows Installers of Pre-built Binaries with MSVC 2008项目,它为您提供了上述问题的简单解决方案。
此答案替代了上述 Piotr 的(目前评价最高的)答案的第 3 步和第 5 步,但您可能仍需要他的答案中的其他步骤,具体取决于您要达到的目标。
- 这是官方安装程序在安装过程中用来修复硬编码路径的操作:qt.520.win32_msvc2012.addons/meta/installscript.qs
- 这是操作的实现方式:qtpatchoperation.cpp
- 这是它修复的文件列表:files-to-patch-windows-qt5
- 这显示了如何从命令行调用安装程序操作作为独立命令:操作(Qt 安装程序框架手册)
总结一下:将您的 Qt 目录移动到您想要的位置后,下载任何一个官方 Qt安装程序并使用以下命令行参数运行它:
cd <path>
installer.exe --runoperation QtPatch windows <path> qt5
移动后替换<path>
为 Qt 目录的完整路径(qtbase
如果您使用的是 Qt 5,则为该目录)。qt5
如果您使用的是 Qt 4,请省略最后一个参数。
这将修复 qmake.exe、.prl 文件和其他文件中的硬编码路径。它为您提供了与官方安装程序在这方面完全相同的行为。
对于最初的举动,nmake "INSTALL_ROOT=\somewhere" install
对我有用。这就是 Piotr 回答的第 1 步和第 2 步。而且我不需要第 4 步或第 6 步,FWIW。
我可以在 WINDOWS(Visual Studio 构建)上使用以下前缀选项配置 QT 5:
configure -prefix C:\the\path\I\want ...
然后调用:
nmake
nmake install
后者会将 Qt 安装在 C:\the\path\I\want 中。
到目前为止,我在 Qt 5.2.1 和 5.3.x 上都没有问题。因此,任何早期的问题似乎现在都已解决。
人们声称 Windows 上没有“make install”,这很奇怪。
我用过很多次,我同意它不是在其他平台上的,但它服务于它的目的。
我如何在 Windows 上使用 Qt 的 make install (来自 cmd):
configure
(n/mingw32-)make
(n/mingw32-)make docs
(n/mingw32-)make install
make install 位复制所有必要的标头,以便能够删除您的源目录。删除所有对象和不必要的东西:
del /S /Q *.obj lib\*.dll
rmdir /S /Q docs-build qmake tools src
这允许您删除源目录。我不知道这对调试 Qt 源代码有什么影响,但它确实减少了影子构建的大小。我用它来维护最小尺寸的 32 位和 64 位版本。
Windows 上的 Qt 无法安装make install
,您会注意到 Windows 的 Qt 安装程序只是为新的安装位置修补 dll 和 pdb。
我的建议是在你想安装它的地方做一个影子构建。您可以手动删除*.obj
文件以节省空间。
Qt 自己的构建说明通过在每个 Makefile 中搜索/替换来显示这是如何完成的。假设源被提取到 C:\qt-4.8.3 并且在该目录中执行构建,然后执行以下操作:
fart -c -i -r Makefile* $(INSTALL_ROOT)\qt-4.8.3 $(INSTALL_ROOT)\my-install-dir
set INSTALL_ROOT=
mingw32-make install
然后创建一个配置文件,告诉 qmake 它的新安装路径。创建一个文本文件 C:\my-install-dir\bin\qt.conf:
[Paths]
Prefix=C:/my-install-dir
Translations = translations
然后作为最后一步(正如 Randy 好心指出的那样),您需要修补 qmake.exe,这可以使用一个名为QtMove的简单实用程序来完成。同样的工具也会自动更新所有prl
文件。
有一个简单的实用程序 QtMove (http://www.runfastsoft.com) 可以轻松做到这一点。
运行重新定位的 qmake.exe 构建您的 .pro 文件,并且所有内容都应与新的 Qt 库链接。
第 1 步:移动 Qt
- 剪切和粘贴
- 当前目录 - C:\tools\Qt
- 目标目录 -C:\sim\dep\Qt
第 2 步:获取旧的 Qt 目录
- 转到 C:\sim\dep\Qt\2010.02.1\Qt
- 打开 .qmake.cache
- 查找变量 QT_SOURCE_TREE
- 注意 QT_SOURCE_TREE 的值
- 我的是 C:\tools\Qt\2010.02.1\Qt
第 3 步:修补 Qt
- 转到 C:\sim\dep\Qt\2010.02.1\bin
- 语法是 qpatch.exe list oldDir newDir
- qpatch.exe files-to-patch-windows C:\tools\Qt\2010.02.1\Qt C:\sim\dep\Qt\2010.02.1\Qt
第 4 步:设置环境变量
- 设置 QTDIR=C:\sim\dep\Qt\2010.02.1\Qt
- 设置 QMAKESPEC=C:\sim\dep\Qt\2010.02.1\Qt\mkspecs\win32-g++
- 设置 PATH=%path%;C:\sim\dep\Qt\2010.02.1\Qt\bin
- 设置 PATH=%path%;C:\sim\dep\Qt\2010.02.1\bin
您可以使用批处理文件完成所有这些操作。这花了我相当长的时间来锻炼,从那以后它为我节省了很多时间。这是一个自动将 Qt 安装更新到新位置的脚本。批处理文件可在此处获得。