卸载VS2015,安装VS2017后Qt报错问题
卸载VS2015随后安装VS2017后再使用QT发现各种报错问题切记在构建项目前一定要先删除原来的临时目录比如shadow build对应的目录否则构建失败的错误会看不懂问题1执行qmake时报错:error: Cannot run compiler cl. Output:原因该问题通常是由于由于编译器cl.exe未正确配置或缺失所导致的解决方案将cl.exe的路径配置到环境变量Path中即可使用EveryThing搜索cl.exe如下将对应cl.exe文件的目录添加到环境变量Path中即可上图中有四个包含cl.exe的目录注意不要设置错误否则可能会出现以下的报错:Qt5Widgetsd.lib(Qt5Widgetsd.dll):-1: error: LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突cl.exe是什么cl.exe 是微软 Visual Studio 套件中的 Microsoft C/C 编译器。它只能在支持 Microsoft Visual Studio for Windows 的操作系统上运行。cl.exe 主要用于将 C 和 C 源代码编译成目标文件 (.obj) 并将其链接成可执行文件 (.exe) 或动态链接库 (DLL)。要使用 cl.exe首先需要安装 Visual Studio 以及 C 和 C 支持。安装完成后可以在 Visual Studio 的 bin 目录下找到 cl.exe。通常有四个版本Hostx64-x64Hostx64-x86Hostx86-x64Hostx86-x86。这四个版本对应着不同的含义从命名可以看出来前半部分为当前平台(宿主平台)后半部分为目标平台Host{宿主平台}\{目标平台}。目录宿主平台目标平台主要用途和场景Hostx64\x6464位 x86平台64位 x86平台最常用。在64位x86架构上编译生成64位程序(库)。性能和兼容性最好。Hostx64\x8664位 x86平台32 位 x86平台在64位x86架构平台上编译生成32位x86架构的程序(库)用于需要兼容32位依赖库的场景。Hostx86\x8632位 x86平台32位 x86平台在32位平台上编译生成32位程序。现代64位平台上较少直接使用。Hostx86\x6432位 x86平台64位 x86平台在32位平台上编译生成64位程序。这是一种交叉编译现在非常罕见。核心概念宿主平台指 cl.exe编译器本身运行所需的操作系统环境。Hostx64表示这是一个64位程序需要在64位Windows上运行。目标平台指编译器生成的可执行文件或库所运行的平台。x86输出32位程序x64输出64位程序。为什么需要这么多版本主要是为了支持灵活的开发和部署需求。例如在当今主流的64位Windows系统上开发64位软件时使用 Hostx64\x64。开发需要向下兼容的32位软件时使用 Hostx64\x86。不需要切换到32位系统就能编译32位程序。问题2编译程序报错:error: C1083: 无法打开包括文件: “type_traits”: No such file or directory根因这是因为VS对应的头文件目录没有添加到环境变量导致解决方案将VS对应的头文件和库文件都添加到环境变量查看Qt构建的环境变量发现INCLUDE字段中不包含VS2017 C 的头文件使用Everything搜索到环境变量设置将该目录添加到INCLUDE字段中如果发现环境变量中没有INCLUDE字段则新建一个INCLUDE字段然后将上图中Qt的环境变量都拷贝到新增的字段中并且将VS的C头文件目录也添加到该字段中若报错无法找到xxx.lib库则是VS2017 的C工具中对应的库文件没有添加到环境变量同样使用Everything搜索该库文件然后将其路径添加到环境变量LIB字段中若环境变量中没有LIB字段同上操作一样