Qt Creator无法检测到VS2019/2022中安装的旧版工具链

VS2019/2022改变了安装机制。如果需要同时使用多个版本的编译器,可以方便地从Visual Studio Installer中,仅安装旧版编译器的工具链,不需要再安装旧版的整个Visual Studio。

大概是从VS2019的后面几个版本开始,还是从2022开始,同时改变了工具链的安装机制。新版本中,无论安装了多少个2017版本以后的工具链(2015存疑),均只出现一个用于规整编译环境的vcvarsall.bat文件,而不像之前那样每个版本一个vcvarsall.bat,要调用那个版本自己去找对应的vcvarsall.bat文件。

到底方便不方便另说,但这个东西给Qt Creator带来了麻烦,就是某些版本的Qt Creator在这种情况下只能检测到最新的一般版本的编译器——因为他是以vcvarsall.bat为单位进行检测的,而新架构的vcvarsall.bat则通过传递不同的参数来区分编译器,不认参数则是最新。

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build> .\vcvarsall.bat -h
[ERROR:vcvarsall.bat] Invalid argument found : -h
[ERROR:vcvarsall.bat] Error in script usage. The correct usage is:
Syntax:
    vcvarsall.bat [arch] [platform_type] [winsdk_version] [-vcvars_ver=vc_version] [-vcvars_spectre_libs=spectre_mode]
where :
    [arch]: x86 | amd64 | x86_amd64 | x86_arm | x86_arm64 | amd64_x86 | amd64_arm | amd64_arm64
    [platform_type]: {empty} | store | uwp
    [winsdk_version] : full Windows 10 SDK number (e.g. 10.0.10240.0) or "8.1" to use the Windows 8.1 SDK.
    [vc_version] : {none} for latest installed VC++ compiler toolset |
                   "14.0" for VC++ 2015 Compiler Toolset |
                   "14.xx" for the latest 14.xx.yyyyy toolset installed (e.g. "14.11") |
                   "14.xx.yyyyy" for a specific full version number (e.g. "14.11.25503")
    [spectre_mode] : {none} for libraries without spectre mitigations |
                     "spectre" for libraries with spectre mitigations

The store parameter sets environment variables to support Universal Windows Platform application
development and is an alias for 'uwp'.

For example:
    vcvarsall.bat x86_amd64
    vcvarsall.bat x86_amd64 10.0.10240.0
    vcvarsall.bat x86_arm uwp 10.0.10240.0
    vcvarsall.bat x86_arm onecore 10.0.10240.0 -vcvars_ver=14.0
    vcvarsall.bat x64 8.1
    vcvarsall.bat x64 store 8.1

Please make sure either Visual Studio or C++ Build SKU is installed.

所以,这时候想在QtCreator里面使用这些旧版工具链的话,就必须要手动添加,并且要附加参数(可以从上面自动检测到的新版编译器的配置项下面“克隆”):

其实就是在克隆来的配置项后面的空格中,添加一个选项:-vcvars_ver=14.2914.29更改为你安装的版本号)。

也算是更清楚地了解了vc背后的机制吧。

  • 最后更改: 2023/01/28 08:51