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。

如:

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文件,可以直接查看参数的定义:

: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)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值