25

我知道有很多关于这个的帖子,但老实说我没有理解任何一个。

那么,如何为我的 Qt Creator(开源 5.7)安装套件?

  • 我已经下载并安装了 MSYS2.... 不知道如何处理它。
  • 我已经下载并安装了 Qt64 - NG.... 不知道下一步该做什么。

我只是希望能够在 Qt 中进行开发,并在 MinGW 32 和 MinGW 64 之间进行了选择。

提前致谢!


编辑:我还检查了 wiki 页面。大多数命令都不起作用。我被告知它已经过时了。

4

3 回答 3

41

我知道你的问题是如何为你的 Qt Creator 安装一个工具包,但首先我认为它需要一个介绍(对不起你的眼睛,英语不是我的母语)

介绍

目的是在 Windows 下使用 GCC 编译器,这意味着我们需要 MinGW(Minimalist GNU for Windows)。

MinGW 仅适用于 32 位,因此我们需要 64 位分叉,这意味着使用 MinGW-w64 或 TDM-GCC 风格。

  • MinGW ,用于 32 位应用程序的 GCC 编译器。
  • MinGW-w64 ,用于 32 位和 64 位应用程序的 GCC 编译器。
  • TDM-GCC ,用于 32 位和 64 位应用程序的 GCC 编译器。

有了它,我们可以在 Windows 中创建我们的应用程序/程序。此外,我们还有另外两种不同的工具

  • Qt 框架库,用于创建具有多平台兼容性的 GUI/接口。
  • Qt Creator ,一个 C/C++ 编辑器,带有用于 Qt 框架的附加编辑工具。


关于二进制兼容链

当我们创建一个应用程序时,我们必须遵循使用相同编译器版本编译的库链,就像我们遵循这些库的应用程序二进制接口(32 位或 64 位)一样。

这意味着,如果我们想使用 MinGW-w64 5.3 和 Qt 5.7 框架编译 32 位和 64 位应用程序,我们需要:

  • MinGW-w64 5.3(在配置中带有 32 位标志)和在 MinGW-w64 下编译的 Qt 5.7 Framwork 32 位构建(MinGW-w64 版本 5.3 或更低,只要它们与我们的编译器保持二进制代码兼容性)。
  • MinGW-w64 5.3(在配置中带有 64 位标志)和在 MinGW-w64 下编译的 Qt 5.7 Framwork 64 位构建(MinGW-w64 版本 5.3 或更低,只要它们与我们的编译器保持二进制代码兼容性)。

现在来奇怪的事情。在 Qt 官方网页上,它仅适用于 MinGW 的 32 位版本......我不知道为什么......

这就是 Qt64-NG 项目的到来,这是一个为 MinGW-w64 获取 Qt 框架 64 位二进制包的地方。不幸的是,该项目已关闭,因此仅在 Qt 5.5 框架版本之前可用。

我不知道其他地方可以从哪里获得用于 MinGW-w64 的更新的 64 位 Qt 二进制包(也许是 MSYS2 项目中的那些?我还没有尝试过)。因此,如果需要,此时必须自己编译(这是为了回答您的开源 5.7 评论)。


安装和配置

现在你的问题。如何为您的 Qt Creator 安装工具包。我将回答 64 位二进制文​​件,因为它是我使用的(后者你只需要为 32 位做同样的事情)

要将 Qt Creator 与 MinGW-w64 一起使用,只需:

  • 下载 Qt Creator 并安装它。如果要使用 CMake 项目,我的建议是下载 4.1(或更高版本)快照。

  • 下载MinGW-w64(posix-seh 或您选择的风格)+ 在一个文件夹中解压缩。

就是这样,我们可以创建 32 位和 64 位应用程序。

另外,除了上述步骤,如果想使用 Qt 框架库(我们应用程序的 GUI/接口)创建应用程序,则需要二进制包,本例为 64 位(32 位二进制包可在Qt官方页面)

  • 下载Qt64-NG(posix-seh 或您上面选择的风格)+ 在一个文件夹中解压缩。
    之后需要执行该目录中包含的qtbinpatcher.exe,只需双击即可。
    注意:如果将此目录更改为其他路径,请再次执行 qtbinpatcher。

这里是结束安装过程的地方。就我而言,我都在同一个文件夹下。例子:

D:\Programacion\mingw64_5.3.0rev0\
D:\Programacion\qt64-ng\qt-5.5.0-x64-mingw510r0-seh\

现在您只需要配置 QtCreator,在这种情况下:

工具 > 选项 > C++,编译器,添加 > MinGW

  • 名称中输入编译器版本,MinGW-5.3 x64
    这是将在 Kits 中显示的名称
  • 编译器路径中浏览 C++ 编译器路径,在本例中为D:\Programacion\mingw64_5.3.0rev0\bin\g++.exe

    注意ABI中它选择在编译器中使用 64 位标志。这就是我们命名x64 的原因。对于 32 位,只需复制并更改选择。

工具 > 选项 > C++、调试器、添加

  • Path中浏览到调试器路径,在本例中为D:\Programacion\mingw64_5.3.0rev0\bin\gdb.exe
  • 名称中输入版本中显示的名称,在这种情况下为 GDB 7.10.1。
    这是将在 Kits 中显示的名称

而且,如果要使用 Qt 框架创建 64 位程序,除了上述之外:

工具 > 选项 > C++,Qt 版本,添加,然后选择放在 qt64-ng bin 目录下的 qmake.exe。

  • 在这种情况下,D:\Programacion\qt64-ng\qt-5.5.0-x64-mingw510r0-seh\bin\qmake.exe
  • 名称中放置Qt %{Qt:Version} (qt-5.5.0-x64-mingw510r0-seh)
    这是将在 Kits 选项卡中显示的名称

现在您只需要指定 Kit:

工具 > 选项 > C++、工具包、添加

  • 名称MinGW-5.3 x64 (Qt-5.5)
  • 编译器中选择 MinGW-5.3 x64
  • 调试器中选择 GDB 7.10.1
  • Qt 版本中选择 Qt 5.5.0 (qt-5.5.0-x64-mingw510r0-seh)

如果要使用CMake,则在 CMake 中使用 CMake路径(我将其与 Ninja 一起使用)。

注意:要安装 Ninja,只需将ninja.exe复制到 mingw-w64\bin 目录,然后在 Kit 中,在Cmake 生成器中将更改为generator ->ninja 和Extra generator ->CodeBlocks。Ninja 同时启动多个 make 命令,从而减少编译时间。


1 分钟配置的长文本。Kit 是我们为编译项目而选择的,可以拥有任意数量的 Kit(CompilerA x32 + Qt5.x、CompilerB x64 + Qt5.x、CompilerX x64 + Qt4.8 等)。

现在,在完成之前,一件重要的事情。在我们创建一个项目(以及它打开的项目)之后,在项目选择器 (Ctrl+5) 处,我们必须处理构建环境变量。

这些变量将在启动我们的运行/构建以进行测试和调试的命令中添加。

在 PATH 中,需要将路径放置到 MinGW-w64 和 Qt64-NG。根据我的拙见,我建议由于 dll 的原因将其按此顺序排列。按照我们的例子:

PATH D:\Programacion\mingw64_5.3.0rev0\bin;D:\Programacion\qt64-ng\qt-5.5.0-x64-mingw510r0-seh\bin;the_other_paths

在 QtCreator 快照分支我不需要检查它,它是自动完成的


大多数 C/C++ 编辑器都是这样工作的。要安装编辑器,请指定编译器和调试器路径,并指定从编辑器启动的构建环境变量(覆盖我们在 Windows 中的那些环境变量)。

注意:我建议使用 64 位编译 Qt Creator,因为与框架一样,对于 Windows,它仅在 Qt 官方网站上提供 32 位


替代方式

另一方面,我们有:

  • MSYS2 ,类似 Linux 的工具环境。

都一样,只是我们使用 pacman 命令下载/安装软件包,并且提供 32 位和 64 位版本。这些应用程序需要从 MSYS2 shell 启动。这不是二进制兼容性问题,而是路径问题。

MSYS2 项目中可用的库可以在我描述的第一个工具链中使用(由于也在 MinGW-w64 下构建)。


编辑:更正了命名,最后的解释,并添加了 Ninja 的 url 和安装说明。

于 2016-07-23T23:00:21.840 回答
6

您应该决定是否要使用 MSYS2 生态系统。如果你想使用MSYS2,你应该卸载你单独下载的Qt软件,以免混淆。对于这个答案的其余部分,我假设您使用的是 MSYS2。

您可以使用 pacman 安装这些 MSYS2 软件包:

  • mingw-w64-i686-qt
  • mingw-w64-i686-qt-creator
  • mingw-w64-x86_64-qt
  • mingw-w64-x86_64-qt-creator

然后使用开始菜单中的相应快捷方式打开 MinGW-w64 32 位或 64 位 shell,并在命令行中运行“qtcreator”。

您还可以使用其他构建系统来构建您的软件。我已经成功地使用 CMake 在 MSYS2 中构建 Qt 应用程序,而不是 Qt Creator。

于 2016-07-12T19:51:59.263 回答
1

Directly launching from explorer will also work, unless you need to use qtcreator's Autotools plugin in which case launching it from an msys2 shell is necessary (so that various environment variables are set correctly).

于 2016-07-13T05:28:57.897 回答