抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

近期在Qt环境下编写C++代码时,我发现如果不安装 Visual Stadio 全家桶的话无法进行 MSVC编译。而我所面临的问题是,放在公司的这台笔记本存储空间只有128GB。对,你没有看错,是128G,而且是整个电脑。安装之前我忘记截图了,这里就po一张按照本文配置完后的磁盘截图。

当时,我就产生了一个想法,难道微软这么大的厂,不安装它的全家桶不至于让我们编译不了吧。在经过一番搜索之后,我发现了一个非常棒的解决方案。经过我一个多小时的测试,非常有效!!!

废话不多说了,上干货。


OS version Windows10 Pro 64bit
Qt version 5.14.0
Qt creator 4.11.0
MSVC version 2017

一、原理解析

我们都知道,如果你安装了Visual Stadio全家桶,在Qt Creator里可以自动检测到MSVC的编译环境。为什么Qt能自动检测出MSVC环境呢?经过一番研究和搜集,我发现,在安装Visual Stadio过程中,Visual Stadio自动对Qt的环境做了适配。

这种适配,主要是通过修改注册表中某一个项来实现的。大致过程是这样的,在安装完Visual Stadio后,它自动修改了注册表,当你再打开Qt Creator时,Qt Creator会自动去查找这个注册表是否有变化,如果发生了变化,就自动适配变化后的编译器,否则,就不做任何修改。

究竟是哪个注册表让这种神奇的现象发生的呢?

  1. Win 32bit环境下: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStuidio\SxS\VS7
  2. Win 64bit环境下:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStuidio\SxS\VS7

image-20200821195744303

Qt Creator会遍历SxS文件夹下的每一个项来比对注册表的变化。

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

上述的数值与MSVC版本的对应关系可以参考:

  1. https://www.cnblogs.com/zjutzz/p/6013783.html
  2. https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes

正常情况下修改好这些注册表的键值,就能达到在Qt Creator使用MSVC编译代码的效果,除非你的电脑中找不到vcvarsall.bat文件。

二、详细操作步骤

1.前期准备

a.存储空间准备
  • 安装好Qt Creator的前提下,至少预留10GB的磁盘空间。
  • 没有安装Qt Creator的前提下,至少预留20GB的磁盘空间。
b.工具准备

2.安装工具

篇幅所限,安装 Qt 的步骤在这里就省略了。

Visual Stadio 2019 生成工具的安装
  1. 打开已经下载好的安装包,第一次打开需要下载一些包文件,下载速度视网速决定,请耐心等待。

image-20200821202048835

  1. 进入界面后,只需勾选C++生成工具,在右侧的安装详细信息菜单中再继续勾选你需要的工具。

Tips:Qt 5.14 推荐采用 MSVC 2017,下图右侧也有 2017的可选项,但是该工具默认链接的是2019版,并且也能正常使用,所以就先不折腾了,保持默认,只勾图中左侧一个勾,右侧会自动勾选默认的几个选项。 然后就耐心等待联网下载和安装。

image-20200821202351645

等安装完毕,就可以关闭这个页面了。

3.增加Qt Creator组件

如果你和我一样,在配置之前,已经安装完Qt Creator了,那请你继续看这一段。

  • 打开Qt Creator安装目录

image-20200831164019946

  • 打开MaintenanceTool.exe

image-20200831164309640

image-20200831164338045

  • 单击右下角设置,再单击资料档案库,添加临时资料档案库,地址是http://mirrors.ustc.edu.cn/qtproject/online/qtsdkrepository/windows_x86/root/qt/

image-20200831164649634

Ps : 这里有个大坑,必须说一下,下载元信息响应会很慢,稍等10分钟左右就可以了。

image-20200831164932459

  • 选择要添加的组件

image-20200831165236555

4.环境配置【重要!!!】

如果这时候你直接打开Qt Creator,你会发现编程器里面还是空的。别着急,要想让自动Qt Creator 检测刚刚安好的编译器,还有关键一步。

  • 关闭 Qt Creator;
  • 按下 Windows + R 在弹出的窗口输入regedit,打开注册表编辑器;

image-20200831170218746

  • 打开后,在输入框粘贴下方的路径

\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio

image-20200831170314139

  • 右击,新建 -> 项 ,连续新建两项,注意层次关系和大小写。

建好两项.png

在 VS7 上新建字符串值,名称是16.0,值是 vs生成工具的安装目录下的一个子目录,具体看图中3处和横线处(仔细看图,我没写错),要保证横线处的路径下有红色箭头处的文件。

关键步骤.png

至此,再打开 Qt Creator 会发现已经自动识别编译环境并且添加好了。


当你兴奋地去新建一个测试程序时,你会发现一个新问题,这个编译环境不能单步调试。这是因为当前 Qt 无法调用 cdb.exe所致。下面我们手动为 Qt 与 cdb 工具建立链接。

1. 打开控制面板

image-20200831171453173

依次找到 程序 -> 程序和功能 ,右击截图中的 Windows SDK ,选择 更改

image-20200831171633586

选择 Change

image-20200831171751694

勾选图中的选项。

image-20200831171854682

再次重启,Qt Creator ,你会发现 Debugger下拉框里已经探测到 cdb 了。

image-20200831172232742

参考文章:

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

评论