如何在 Qt Creator 中使用 MinGW-64

Posted

技术标签:

【中文标题】如何在 Qt Creator 中使用 MinGW-64【英文标题】:How to use MinGW-64 with Qt Creator 【发布时间】:2016-11-15 01:57:50 【问题描述】:

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

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

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

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

提前致谢!


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

【问题讨论】:

【参考方案1】:

您应该决定是否要使用 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。

【讨论】:

感谢您的评论。我刚刚发现 MSYS2 和 Qt 是两个不同的东西。可以说我更喜欢使用 Qt。有没有办法可以在上面安装 MinGW 64? 我以为 Windows 的 Qt creator 的官方发行版捆绑了它自己的 MinGW-w64 编译器。您应该尝试使用它,对吗? 它带有一个 MinGW - 32 编译器和许多 MSVC 工具包,但仅此而已。另外,我尝试在 64 位机器上运行可执行文件,但没有成功。 我将结束这个问题,因为我刚发现这甚至不是问题所在:/ 不过,感谢您抽出宝贵时间回答这个问题^^ 谢谢,这比尝试为直接安装的 Qt Creator 升级编译器要容易得多【参考方案2】:

从资源管理器直接启动也可以,除非您需要使用 qtcreator 的 Autotools 插件,在这种情况下需要从 msys2 shell 启动它(以便正确设置各种环境变量)。

【讨论】:

“从资源管理器直接启动也可以”。什么意思? 双击 qtcreator.exe 是我的意思,而不是使用 msys2 shell。【参考方案3】:

我知道您的问题是如何为您的 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 位标志)和 Qt 5.7 Framwork 32 位构建在 MinGW-w64 下编译(MinGW-w64 版本 5.3 或更低,只要它们与我们的编译器保持二进制代码兼容性)。 MinGW-w64 5.3(在配置中带有 64 位标志)和 Qt 5.7 Framwork 64 位构建在 MinGW-w64 下编译(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(或更高版本)snapshots。

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

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

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

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

安装过程到此结束。就我而言,我都在同一个文件夹下。示例:

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

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

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

name 中输入编译器版本,MinGW-5.3 x64 Kits 中将显示的名称编译器路径 中浏览 C++ 编译器路径,在本例中为 D:\Programacion\mingw64_5.3.0rev0\bin\g++.exe注意ABI 中选择在编译器中使用 64 位标志。这就是我们放入 name x64 的原因。对于 32 位,只需复制并更改选择。

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

Path 中浏览到调试器路径,在本例中为 D:\Programacion\mingw64_5.3.0rev0\bin\gdb.exename 中输入版本中显示的名称,在这种情况下为 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.exename 中放入 Qt %Qt:Version (qt-5.5.0-x64-mingw510r0-seh)将显示在套件选项卡中

现在您只需要指定套件:

工具 > 选项 > 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 中使用 the CMake 路径(我使用它 with Ninja )。

注意:安装 Ninja 只需将 ninja.exe 复制到 mingw-w64\bin 目录,然后在 Kit 中,在 Cmake generator 中将更改推送到 生成器->ninja 和额外的生成器->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 下构建)。

编辑:更正了命名,最后的解释,并添加了忍者的网址和安装说明。

【讨论】:

+1 表示只有 i686-w64-mingw32 工具链与 Qt Creator 打包在一起(你不知道为什么)。我刚刚花了一周的时间试图在 Qt Creator 下工作的 Cygwin 中编译得很好,原因是 Cygwin 使用的是 x86_64-w64-mingw32 工具链。 (我的问题是我的供应商库与 i686 工具链不兼容,所以没有链接!)

以上是关于如何在 Qt Creator 中使用 MinGW-64的主要内容,如果未能解决你的问题,请参考以下文章

使用MinGW编译Qt Creator

如何在 Qt creator 中更改/配置所需的编译器?即在 MSVC/Mingw 或 g++/clang++ 之间切换

如何向 Qt Creator 添加新工具包

Webview 在 Windows 上的 mingw 中无法在 Qt Creator 中工作

qt creator 怎么配置mingw

使用 Qt Creator / qmake / MinGw 的预编译标头无法在调试版本中工作