QtCreator 的几个问题
Posted
技术标签:
【中文标题】QtCreator 的几个问题【英文标题】:Several questions with QtCreator 【发布时间】:2011-07-26 13:51:28 【问题描述】:我正在开发一个应该使用 Qt 编写 GUI 的项目。我正在考虑使用 QtCreator 作为开发 IDE,但我面临一些问题。该项目应该有一个不应依赖于任何 qt 库/模块的 dll 文件,它应该只使用 winapi 并且应该使用 x86 和 x64 编译。所以我的问题是:
是否可以使用 QtCreator 编译一个不依赖于 qt 模块的 dll。如果是,怎么做? 是否可以使用 MinGW x86 & x64 编译单个项目?如果是这样,我该如何指定要使用的编译器?这是我第一个使用 Qt 的项目,我不是 C++ 大师,所以请尽可能详细地描述细节 :-) 非常感谢您的帮助。
更新
好的,我尝试按照 Berk 的建议编译项目,但我仍然有问题。输出依赖于 LIBGCC_S_DW2-1.DLL 和 MSVCRT.DLL。是否可以删除对 LIBGCC_S_DW2-1.DLL 的依赖并将 MSVCRT.DLL 链接到我的 exe/dll 中(就像 MS VC 一样)。
【问题讨论】:
LIBGCC_S_DW2-1.DLL
依赖来自 mingw。您需要使用 Microsoft Visual C++ 编译器。请检查我更新的答案。
【参考方案1】:
您可以将 Qt Creator 用作纯 C++ IDE。支持通用项目(qtcreator项目)、cmake和qmake。
使用通用项目,您必须定义所有的 make 脚本。我不推荐这个。 使用 cmake 你可以做很多我听说的事情,但我没有任何经验。 使用 qmake 您的项目依赖于 qmake 工具。但是您的应用程序不必依赖任何 qt 库。为此,您需要将CONFIG -= qt
标志添加到您的 qmake 项目文件中。
我推荐 qmake 方法。您将在 Qt Creator 上获得基于 qmake 的项目的最佳体验。
您可以通过 Qt Creator 的界面来完成。您需要先定义两个编译器。
编辑:
我可以看到这些依赖项,您的 qmake 是由 mingw 编译的。这些是 mingw 的依赖项。所以你不能避免 LIBGCC_S_DW2-1.DLL
使用 mingw。所有依赖 Qt 的 dll 都以 Qt*.dll 命名。所以你的库没有与任何 Qt 库链接。
您需要使用 Microsoft Visual C++ 编译器。
对于基于 qmake 的项目,Qt Creator 从检测到的 Qt 目录中确定编译器、链接器信息。如果您的 Qt 版本是使用 mingw 编译的,那么它也将 mingw 用于您的项目。如果您需要使用其他编译器进行编译,您有两种选择:
使用另一个首选编译器编译 Qt。 (可能需要几个小时!) 使用您首选的编译器信息进行新的构建配置。第一个对于基于 Qt 的项目至关重要。如果您也必须编译基于 Qt 的部分。我认为您应该使用 MSVC 编译器 (-mkspec win32-msvc20xx
) 编译 Qt。然后您可以将新的编译器目录添加到 Qt 版本 (Options->Qt) 并使用它。这很容易。
但如果你不使用任何 Qt 部件。编译qt不是一个好的选择。在 Qt Creator 中为您的项目创建一个新的构建配置并设置/覆盖一些变量。 (您需要覆盖 qmake 的 spec 命令开关为 win32-msvc20xx,然后您需要将 MSVC 编译器路径添加到环境变量。此外,您需要将所有构建步骤的 make 命令覆盖为 nmake 或 jom)
正如您所说,您的项目的 GUI 是用 Qt 编写的。第一种方法更适合您。
【讨论】:
谢谢 Berk,今晚我会去看看。顺便说一句,qmake 是否修改/更改编译输出? 不,它只是一个包装器。它生成 makefile(用于 mingw/gcc)或 Visual Studio 项目文件(用于 Visual c++ 编译器),然后执行构建操作。通过使用 qmake,您的项目文件将更加独立于编译器。 谢谢,+1 对您的回答 :)。现在更清楚了。我会尽快检查您的解决方案,如果一切顺利,请将您的答案标记为答案:-)。再次感谢 感谢您的帮助伯克。我想在没有任何 Qt 库的情况下将 MinGW 用于 x86 和 x64 开发。我认为我不需要重新编译 qt,新的构建配置就足够了。但我似乎无法让它工作。我添加了一个新的构建配置,我为 x64 MinGW 创建了一个新的工具链,但我无法将我的项目设置为使用新的工具链。它总是指向默认的:“Mingw 作为 Windows 目标的 GCC”。有什么解决方案可以为我的项目设置新的工具链。再次感谢伯克。 遗憾的是我找不到任何简单的方法来选择新的工具链。 Qt Creator 总是使用已安装的 Qt 版本的工具链。但是你可以在 Qt Creator 的项目设置中覆盖 mkspec。以上是关于QtCreator 的几个问题的主要内容,如果未能解决你的问题,请参考以下文章