我在这里讨论的是如何使QtCreator与Visual Studio 2017(MSVC2017)编译器配合使用,包括调试!默认安装MSVC2017和Qt 5.10将允许您编译和运行代码,但默认情况下不会获得调试支持。我将展示获取所有必要安装步骤(包括调试支持)的方法,适用于以下参考系统:
参考系统:
- Windows 7 SP1 x64(在Win10上完全相同)
- Visual Studio 2017(版本15.5.1)
- Qt 5.10.0
- Qt Creator 4.5.0(MSVC 2015,64位)
- 用于Windows的调试工具(CDB.exe),它不随Visual Studio 2017一起提供
- 通过Windows 10 SDK
- 面向Windows桌面64位应用程序
我已经在Windows 10和Windows 7(x64)上测试了这些步骤,它们似乎可以正常工作。请注意,Qt安装程序捆绑的QtCreator版本是32位版本,如果您尝试使用MSVC进行调试,则无法正常工作。虽然有文档记录这一点,但没有逐步说明(参见QtCreator Windows Debugging和QtCreator Debugger Engines),而且并非所有内容都在一个地方,因此我将在此提供简单的说明,以便为上述参考系统使其运行。
先决条件
Windows 7 x64或Windows 10
Visual Studio 2017(使用版本15.5.1进行测试)
假设您已经安装了Win7 / Win10和MSVC2017,让我们开始吧!
下载Qt
从Qt Official Release Archive下载文件qt-opensource-windows-x86-5.10.0.exe
选择“msvc2017 64-bit”选项进行安装。
对于此处描述的配置,其他所有复选框都不必要
安装适用于 Windows 10 的 Windows SDK
- https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive
选择"Windows调试工具",并取消其他所有选项
网络安装程序将下载所选组件并创建一个名为“Windows Kits”的文件夹。
安装这两个文件(x86版本是可选的):
Windows Kits\10\WindowsSDK\Installers\X64 Debuggers And Tools-x64_en-us.msi
Windows Kits\10\WindowsSDK\Installers\X86 Debuggers And Tools-x86_en-us.msi
安装64位独立版QtCreator安装程序
注意:如果您在安装Windows调试工具之后安装QtCreator,则QtCreator将自动检测调试器的位置,在创建套件时为您节省麻烦。如果您已经安装了QtCreator,请不用担心,下面将显示如何配置QtCreator中的套件。
下载“Windows 64位Qt Creator 4.5.0”
这个版本似乎有选择"CDB调试器支持"的选项(在安装了捆绑了Qt Creator的完整Qt软件包中找不到)
在QtCreator中配置工具包
在QtCreator的术语中,"Kit"是调试器、编译器、Qt版本等组合。(在这个意义上,当我们安装调试器时,单词"Kit"并不意味着与"Windows Kits"相同;这是一个不幸的名称冲突。)通过选择"工具" -> "选项" -> "构建和运行"来设置"QtCreator Kit"。我喜欢从最右边的选项卡开始,并向左工作,最后结束于"Kits"。原因是所有下面的标签(1,2,3)都需要进行配置才能形成完整的Kit。
在QtCreator中配置调试器
设置路径为C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe,并将其命名为"Window Kit 10 cdb x64"。
设置编译器。确保“Microsoft Visual C++ Compiler 15.0 (amd64)”在列表中。注意,如果您将东西安装到默认路径,则QtCreator将自动检测这些位置。如果未列出编译器的路径,请添加该路径。
请注意,对于Visual Studio 2017 x64位,您需要“amd64”版本,即64位编译器。如果您想知道为什么有这么多编译器列出来--它们是“交叉编译器”。这意味着它们针对不同的架构,因此例如,“x86_amd64”是一个32位进程,创建一个64位应用程序;如果您在32位计算机上开发64位代码(因此术语是交叉编译),则会使用此版本。由于本教程假定您正在运行64位操作系统,请使用amd64版本。(“x86_amd64”交叉编译器也会生成64位代码。)当我第一次看到QtCreator中巨大的编译器选择列表时,我不知道该选哪个。现在你也知道了!请参见编译x64代码时,“x86_amd64”和“amd64”之间有什么区别?。
现在配置套件
点击添加。
名称 - 给出套件的名称;这将是编译应用程序时使用的配置。
编译器 - 选择"C和C++的Microsoft Visual C++ Compiler 15.0 (amd64)"。
调试器 - 选择我们在"调试器"选项卡上配置的"Windows Kit 10 cdb x64"。
Qt版本 - 选择"Qt 5.10.0 (msvc2017_64)"。与您将链接的Qt库具有相同的位数进行编译非常重要。
点击应用。
验证调试工作
让我们写一个64位程序,并对其进行调试。一个好的测试是分配大量内存(典型的32位Windows进程仅限于2GB,请参见32位进程在64位操作系统上可以访问多少内存?)。分配32GB RAM应该是一个肯定的指标,表明我们确实正在编译64位应用程序。这是QtCreator调试64位Windows测试程序的屏幕截图:
请注意,我正在使用MSVC2017 64位编译器和上述提到的CDB.exe调试器。
#include
#include
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int intSize = sizeof(int);
assert(intSize == 4);
int intPtrSize = sizeof(int*);
assert(intPtrSize == 8);
constexpr size_t giga = 1000 * 1000 * 1000;
size_t _32gigs = 32 * giga / intSize;
int* gigaChunk = new int[_32gigs];
assert(gigaChunk != nullptr);
return a.exec();
}