Qt编译报错:Unexpected compiler version, expected Clang 18.0.0 or newer——Qt安装MSVC编译器

截止到本人所使用的Qt6.6.3为止,Qt尚不支持MSVC2022编译器的默认编译器配制。所以,在Qt构建套件中使用MSVC编译器的话,可能仍需要调整Visual Studio版本,或者手动设置MSVC编译器。

如果你的系统安装的是Visual Studio2022,那Qt自动识别的MSVC编译器可能是这样的:

而如果你在构建的时候,使用的套件是MSVC2019,将会报错:Unexpected compiler version。

如:

bash 复制代码
main.cpp:1:10: In included file: static assertion failed: error STL1000: Unexpected compiler version, expected Clang 18.0.0 or newer.
yvals_core.h:: error occurred here

所以,这时候就需要我接下来要说的手动来安装和调整MSVC编译器的设置了。

一、安装MSBuild

1、单独安装MSBuild

由于完整的Visual Studio过于庞大,而MSBuild又相对于来比较优秀,所以在很多时候,单独安装MSBuild就是一个不错的选择。

使用vs_BuildTools.exe可以轻松安装对应版本的MSBuild,以及Qt需要的Windows SDK。

Microsoft C++ 生成工具 - Visual Studiohttps://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/2、完整安装Visual Studio。

完整安装Visual Studio有两种选择:

  • 完整安装Visual Studio 2019。那么就不存在后面的问题了。因为Qt会自动识别其中的MSVC编译器,而且其中的编译器版本是完全能用的。

Qt创建项目 No suitable kits found.-CSDN博客文章浏览阅读4.6k次,点赞4次,收藏10次。个人感觉,安装的重点是编译在Qt里面选择了编译环境,就不要在Developer and Desiner Tools里面选择相应的编译环境。归根结底,Qt出现这个问题,肯定是编译环境有问题了,个人比较喜欢MSVC的编译环境,所以仍然坚持要调试出MSVC的kit。有人说需要是MinGW环境的问题,有人说是Visual Studio的问题,有人说要调整Qt安装。既然是Qt编译环境的问题,把关注的重点也放在了Qt的编译环境安装部分。网上也看了很多的解决方案,但都不得要领,也都没有解决。https://blog.csdn.net/John_Lenon/article/details/130648399这种安装方法存在一些问题,比如vs 2019对于.net框架版本的支持远低于2022。如果你不需要相关功能,完全可以这么操作。

  • 安装Visual Studio 2022。而我们的重点也在后续的调整MSBuild。

二、安装组件的调整Qt构建套件kit

++当前一步操作是建立在你安装了Visual Studio 2022,或者你的设备上有多个MSBuild版本时在用时。++如果你的设备上只有Visual Studio 2019和与之对应的MSBuild,那Qt基本上是可以自动识别的。这部分内容也就可以忽略了。

  • 安装对应的MSBuild

如果你安装了Visual Studio,可以使用Visual Studio Installer(完全安装Visual Studio). 如果没有,可以使用上面推荐的vs_BuildTools(仅安装MSBuild)。

需要确定设备上安装了对应的MSBuild, 及Windows SDK

  • 手动添加Qt编译器

打开Qt-编译-Preferences, 点击构建套件-编译器,然后添加MSVC编译器:

这时候,Qt会自动识别到vcvarsall.bat的路径,如果没有,需要填入相关路径。

然后填写 自定义编译器名称、架构,vcvarsall.bat的其他参数------就是需要填入MSVC编译版本的参数。

我们打开vcvarsall.bat文件,可以直接查看参数的定义:

bash 复制代码
:usage
echo Syntax:
echo     %~nx0 [arch] [platform_type] [winsdk_version] [-vcvars_ver=vc_version] [-vcvars_spectre_libs=spectre_mode]
echo where :
echo     [arch]: x86 ^| amd64 ^| x86_amd64 ^| x86_arm ^| x86_arm64 ^| amd64_x86 ^| amd64_arm ^| amd64_arm64
echo     [platform_type]: {empty} ^| store ^| uwp
echo     [winsdk_version] : full Windows 10 SDK number (e.g. 10.0.10240.0) or "8.1" to use the Windows 8.1 SDK.
echo     [vc_version] : {none} for latest installed VC++ compiler toolset ^|
echo                    "14.0" for VC++ 2015 Compiler Toolset ^|
echo                    "14.xx" for the latest 14.xx.yyyyy toolset installed (e.g. "14.11") ^|
echo                    "14.xx.yyyyy" for a specific full version number (e.g. "14.11.25503")
echo     [spectre_mode] : {none} for libraries without spectre mitigations ^|
echo                      "spectre" for libraries with spectre mitigations
echo:
echo The store parameter sets environment variables to support Universal Windows Platform application
echo development and is an alias for 'uwp'.
echo:
echo For example:
echo     %~nx0 x86_amd64
echo     %~nx0 x86_amd64 10.0.10240.0
echo     %~nx0 x86_arm uwp 10.0.10240.0
echo     %~nx0 x86_arm onecore 10.0.10240.0 -vcvars_ver=14.0
echo     %~nx0 x64 8.1
echo     %~nx0 x64 store 8.1
echo:
echo Please make sure either Visual Studio or C++ Build SKU is installed.
goto :end

比如我需要的是amd64位编译器,MSBuild 2029对应的编译器版本为14.29,那么我需要填的参数就是:amd64 -vcvars_ver=14.29

然后选择对应的ABI信息,点击确定添加就可以了。

  • 编辑和添加构建套件(Kit)

设置编译器完成后,即可到构建套件栏编辑和添加构建套件了。

再回到代码窗口,执行编译,成功!!

相关推荐
枫叶丹416 小时前
【Qt开发】Qt窗口(九) -> QFontDialog 字体对话框
c语言·开发语言·数据库·c++·qt
海上彼尚17 小时前
Go之路 - 7.go的结构体
开发语言·后端·golang
源代码•宸1 天前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
云和数据.ChenGuang1 天前
PHP-FPM返回的File not found.”的本质
开发语言·php·运维工程师·运维技术
R.lin1 天前
Java 8日期时间API完全指南
java·开发语言·python
yangpipi-1 天前
《C++并发编程实战》 第4章 并发操作的同步
开发语言·c++
mengzhi啊1 天前
qt更改背景颜色的动画
qt
火钳游侠1 天前
java单行注释,多行注释,文档注释
java·开发语言
有趣的我1 天前
C++ 多态介绍
开发语言·c++
fie88891 天前
波束赋形MATLAB代码实现
开发语言·matlab