正确在 Windows 上配置 MSVC(2019/2017) 作为 Qt 编译器

https://ld246.com/article/1592296047699

正确在 Windows 上配置 MSVC(2019) 作为 Qt 编译器

本文致力于讲述清楚如何在仅安装 vs 生成工具(不安装完整版本的 visual studio)的情况下配置好环境,使得 Windows+Qt(msvc)+msvc 工具链能正常使用,并能正常单步调试(cdb)。本文极有可能是网上少数讲清楚的教程,反正我自己在解决问题前搜索了大量资料博客。🤓 不想看废话的话,直接跳至 具体操作说明。

问题由来

早期版本的 vs 和 vs 生成工具,会自动配置好相关环境(后面会讲到底是指哪里),使得安装 Qt(msvc 版)及 Qtcreator 后无感直接使用。但是新版本的 vs 生成工具(2019)并不会自动配置导致 Qtcreator 安装后无法使用 msvc c++ 编译器。

传统方法

这使得现在在 Windows 上使用 Qt ,在不手动配置下只剩下两种方式:
1:放弃使用 msvc,使用 Qt with MinGW 版本。这样利用 Qt 安装包自带的 MinGW,可以避免环境配置
2: 安装完整版本的 visual studio,比如 visual studio 2019 community。完整版本的 vs 会自动配置环境,所以也可以无需手动配置环境。

网上搜索教程大抵上述两种做法。但是,如果想在 Windows 上使用微软自己的编译工具链,又不想安装庞大的完整 vs,就完了,基本上查网上发现可以仅安装 vs 生成工具,这是微软自己提供的单独的 c/c++ 编译器工具链。但是安装完后发现 Qtcreator 里无法自动发现 msvc 编译器,而现版本的 Qtcreator 又不能手动添加 msvc 类型的编译器,这样导致走不下去了,查阅了无数教程依然无果。直到发现这篇讲解 Qtcreator 是如何探测 vs 环境的文章——link。

本教程原理解析

根据上文指出的答案,答主贴出了 Qtcreator 探测 vs 环境的关键代码,原图请看上述链接的知乎原图,看完代码发现(源码之下了无秘密 💯) Qtcreator 查找的逻辑是在指定注册表路径下找:
1:如果是 32 位环境下,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStuidio\SxS\VS7

2:如果是 64 位环境下,

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStuidio\SxS\VS7

然后遍历 SxS 里面的项,
1:如果键名(其实就是数字)大于 14(从 15 开始,即 msvc2017,那就把该键值(其实就是硬盘里的 vs 安装路径)后面拼接上 /VC/Auxiliary/Build 查看此处是不是有 vcvarsall.bat 文件
否则(即键名小于等于 14),那就把该键值后面拼接上 /VC7 查看此处是不是有 vcvarsall.bat 文件

上述 15 代表 msvc2017,16 代表 msvc2019,14 及更小的数字代表更老版本的 msvc,具体版本数字对应关系参见

https://www.cnblogs.com/zjutzz/p/6013783.html 和
https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes
此处的各版本发行说明

在这里插入图片描述
如果上述条件下能找到 vcvarsall.bat 文件,那 Qtcreator 就能自动配置好环境,下面是照做说明。

具体操作说明

1:安装 msvc2019 生成工具

打开 https://visualstudio.microsoft.com/zh-hans/downloads/ ,翻到下面的「所有下载」,展开「Visual Studio 2019 工具」,找到「Visual Studio 2019 生成工具」,点击右边的下载。
在这里插入图片描述
双击打开,我们只需要「C++ 生成工具」
在这里插入图片描述
PS. Qt 5.14 推荐采用 msvc 2017,上图右侧也有 2017的可选项,但是该工具默认链接的是2019版,并且也能正常使用,所以就先不折腾了,保持默认,只勾图中左侧一个勾,右侧会自动勾选默认的几个选项。

然后就耐心等待联网下载和安装。
在这里插入图片描述
等安装完就可以关闭了,此后也用不到这里了。

安装 Qt 5.14

基本傻瓜化操作。选择组件时看图即可。红色矩形框必选(至少 32 位/64 位选择一个,对于初学者,不勾选 32 位也行),大括号内容建议勾选。

qt 安装.png
等待一会即可。

配置环境(关键步骤)

此时打开 Qtcreator 发现空空如也,果然找不到 msvc 编译器。关闭 Qtcreator。

默认找不到.png

此时开始做本文的核心操作:

  1. 打开注册表\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio(如果是32位系统,现在估计少见了,打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStuidio\SxS\VS7
    新建项 SxS.png

    连续新建两项,见下图,注意层次关系,注意大小写
    在这里插入图片描述
    然后在 VS7 上新建字符串值,名称是16.0,值是 vs生成工具的安装目录下的一个子目录,具体看图中3处和横线处(仔细看图,我没写错),要保证横线处的路径下有红色箭头处的文件。

在这里插入图片描述
这里解释一下,16.0 代表是 msvc 的2019版,见上面的原理解析(但其实只要大于14即可,原因也见上面的原理解析)

  1. 再次打开 Qtcreator,神奇的事情发生了,Qtcreator 已自动发现并添加好了。
    在这里插入图片描述

  2. 接下来自然是去「构建套件(Kit)」里选择相应编译器即可,看红色箭头。
    在这里插入图片描述
    到此结束。如果想编译 32-bit 程序,那自行在这个界面点击「添加」并选择对应编译器,不再赘述。
    确认是否能编译程序

新建一个默认项目,看能否正常运行。

添加单步调试支持。

到目前为止,已经可以运行程序了,但是无法单步调试。

无法调试.png

如果去网上一搜,又是一大堆误导、不适用的信息。其实 vs生成工具自带了 cdb,但是却没有默认启用,这才是关键。

在控制面板——程序里找到Windows SDK,点击更改

在这里插入图片描述

然后,点 Change
在这里插入图片描述

再然后,勾选 debug tool(这是重点)
在这里插入图片描述

重新打开 Qtcreator,发现已自动探测到 cdb
发现 cdb.png

到「构建套件(Kit)」选项卡配置好调试器,注意选择32位还是64位,要和编译器保持一致。
配置 cdb.png

确认是否能单步调试

看图,确实已经可以了。

cdb 成功.png

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值