qt - 如何在 Qt Creator 中使用 MinGW-64

标签 qt mingw-w64 msys2 qt5.6

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

那么,如何为我的 Qt Creator(开源 5.7)安装工具包?

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

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

    提前致谢!

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

    最佳答案

    我知道你的问题是你如何为你的 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/接口(interface)。
  • Qt Creator ,一个 C/C++ 编辑器,带有用于 Qt 框架的附加编辑工具。

  • 关于二进制兼容链

    当我们创建一个应用程序时,我们必须遵循使用相同编译器版本编译的库链,就像我们必须遵循这些库的应用程序二进制接口(interface)(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 位做同样的事情)

    要使用带有 MinGW-w64 的 Qt Creator,只需要:
  • 下载 Qt Creator 并安装它。我的建议是下载4.1(或更高版本)snapshots如果要使用 CMake 项目。
  • 下载MinGW-w64 (posix-seh 或您选择的风格)+ 在一个文件夹中解压。

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

    另外,除了上述步骤之外,如果要使用 Qt 框架库(我们应用程序的 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
  • 在名称中输入编译器版本,MinGW-5.3 x64 这是将在 Kits 中显示的名称
  • 在编译器路径中浏览 C++ 编译器路径,在本例中为 D:\Programacion\mingw64_5.3.0rev0\bin\g++.exe 记下 在 ABI 中,它被选择在编译器中使用 64 位标志。这就是我们命名 x64 的原因。对于 32 位,只需复制并更改选择。

  • 工具 > 选项 > C++ 、调试器、添加
  • 在路径中浏览到调试器路径,在本例中为 D:\Programacion\mingw64_5.3.0rev0\bin\gdb.exe
  • 在名称中输入版本中显示的名称,在本例中为 GDB 7.10.1。它是将在套件中显示的名称

  • 并且,如果您想使用 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 选项卡中的名称

  • 现在您只需要指定套件:

    工具 > 选项 > C++ , Kits, Add
  • 在名称 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 和 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 和安装说明。

    关于qt - 如何在 Qt Creator 中使用 MinGW-64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335424/

    相关文章:

    c++ - 在 64 位 Windows 7 (msys2/mingw64) 上构建 GMP 6.1.0 : configure fails due to mp_limb_t is not 64 bits

    c++ - 错误: sigjmp_buf does not name a type. When Compiling my project with Poco C++ libraries

    python - 在 PySide 中加载 QtDesigner 的 .ui 文件

    c++ - QGraphicsView使用鼠标滚轮在鼠标位置下放大和缩小

    c++ - Qt、QTransform旋转

    c++ - 在 MinGW 和 MinGW-64 上执行命令后变量为空?

    c - 跨字边界的 MinGW64 位域访问是错误的

    c++ - CodeLite 不会检测(安装)MinGW——即使手动配置也不会编译

    mpi - 在 MSYS2-MinGW 中安装 OpenMPI 或 MPICH2

    c++ - 模拟 QScrollArea Qt5 的滚动