22

我找不到任何关于如何在 Windows 上安装 Qt 的信息。
在 wiki 文章How to setup shadow builds on Mac and Linux-prefix中,脚本中有选项的描述,configure但此选项在 Windows 上不可用。
我知道我可以直接从构建文件夹中使用 Qt,但不执行安装步骤似乎不是正确的事情。这种方法的一个问题是尺寸。Qt 的构建文件夹占用大约 4GB 空间,而使用二进制安装程序安装后 Qt 占用大约 1GB 空间。我想差异是由于在构建过程中创建的临时文件。我希望某些安装过程将安装(复制)只需要的文件,将临时文件留在构建文件夹中。

4

8 回答 8

28

正如 İsmail 所说,Windows 上没有 Qt 的安装步骤。但是,可以尝试通过执行以下操作来近似它。

  1. 清理
    在构建文件夹中 运行make clean以删除所有临时文件。

  2. 复制构建文件夹移动到您想要“安装”Qt 的位置。让我们称之为INSTALL_DIR
  3. 修复qmake.exe可执行文件
    中硬编码的路径 运行qmake -query以查看哪些路径被编译(硬编码)到 qmake 和
    a. 通过将其替换为INSTALL_DIRusing qmake -set(1) 来修复包含构建文件夹的路径。

    b。在其中指定新 Qt 路径 qt.conf的 bin 子文件夹中创建一个文件。INSTALL_DIR
  4. 添加当前目录以包含路径
    在 Qt 提供的二进制发行版中,pwd 包含在 中QMAKE_INCDIR,因此最终在您的项目中包含路径为“.”。这在自定义构建的 Qt 中默认不会发生,因此您必须将以下行添加到mkspecs/YOUR-PLATFORM-HERE/qmake.conf文件中:
    QMAKE_INCDIR += "."
  5. 修复prl文件
    当您将 Qt 组件添加到项目文件(例如CONFIG += uitools)时,Qt%QTDIR%/lib/QtUiTools.prl会查找该组件的库依赖项。这些文件将具有配置和构建 Qt 的目录的硬编码路径。lib/*.prl对于所有文件 ,您必须用您将 Qt 移动到的目录替换该构建目录。
  6. 使源可用
    如果您进行了影子构建(在包含源的文件夹之外的文件夹中构建),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项目,它为您提供了上述问题的简单解决方案。

于 2011-01-15T16:49:28.447 回答
14

此答案替代了上述 Piotr 的(目前评价最高的)答案的第 3 步和第 5 步,但您可能仍需要他的答案中的其他步骤,具体取决于您要达到的目标。

总结一下:将您的 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。

于 2013-07-14T14:22:18.730 回答
8

我可以在 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 上都没有问题。因此,任何早期的问题似乎现在都已解决。

于 2014-08-04T14:16:33.833 回答
7

人们声称 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 位版本。

于 2011-01-15T17:04:09.980 回答
3

Windows 上的 Qt 无法安装make install,您会注意到 Windows 的 Qt 安装程序只是为新的安装位置修补 dll 和 pdb。

我的建议是在你想安装它的地方做一个影子构建。您可以手动删除*.obj文件以节省空间。

于 2011-01-15T11:33:57.920 回答
3

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文件。

于 2012-11-07T21:35:59.650 回答
2

有一个简单的实用程序 QtMove (http://www.runfastsoft.com) 可以轻松做到这一点。

运行重新定位的 qmake.exe 构建您的 .pro 文件,并且所有内容都应与新的 Qt 库链接。

于 2011-10-20T22:34:48.883 回答
2

第 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 安装更新到新位置的脚本。批处理文件可在此处获得。

于 2011-01-31T09:36:42.843 回答