截止到本人所使用的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)
设置编译器完成后,即可到构建套件栏编辑和添加构建套件了。
再回到代码窗口,执行编译,成功!!