QT 转为VC工程 windows SDK的版本确定规则

这篇博客详细解析了VS2015中用于查找和设置Windows10SDK环境变量的vcvarsqueryregistry.bat脚本。脚本首先尝试从HKLM和HKCU注册表项获取SDK安装路径,然后检查不同版本的SDK安装,并根据用户可能指定的特定版本进行匹配。如果找不到SDK,脚本将返回错误。这个过程对于正确配置编译环境至关重要。

对于VS2015

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vcvarsqueryregistry.bat

:GetWin10SdkDir

@call :GetWin10SdkDirHelper HKLM\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE\Wow6432Node > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKLM\SOFTWARE > nul 2>&1
@if errorlevel 1 call :GetWin10SdkDirHelper HKCU\SOFTWARE > nul 2>&1
@if errorlevel 1 exit /B 1
@exit /B 0

:GetWin10SdkDirHelper

@REM Get Windows 10 SDK installed folder
@for /F "tokens=1,2*" %%i in ('reg query "%1\Microsoft\Microsoft SDKs\Windows\v10.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET WindowsSdkDir=%%k
    )
)

@REM get windows 10 sdk version number
@setlocal enableDelayedExpansion
@if not "%WindowsSdkDir%"=="" @for /f %%i IN ('dir "%WindowsSdkDir%include\" /b /ad-h /on') DO (
    @REM Skip if Windows.h is not found in %%i\um.  This would indicate that only the UCRT MSIs were
    @REM installed for this Windows SDK version.
    @if EXIST "%WindowsSdkDir%include\%%i\um\Windows.h" (
        @set result=%%i
        @if "!result:~0,3!"=="10." (
            @set SDK=!result!
            @if "!result!"=="%user_inputversion%" set findSDK=1
        )
    )
)

@if "%findSDK%"=="1" set SDK=%user_inputversion%
@endlocal & set WindowsSDKVersion=%SDK%\

@if not "%user_inputversion%"=="" (
  @REM if the user specified a version of the SDK and it wasn't found, then use the
  @REM user-specified version to set environment variables.

  @if not "%user_inputversion%\"=="%WindowsSDKVersion%" (
    @set WindowsSDKVersion=%user_inputversion%\
    @set WindowsSDKNotFound=1
  )
) else (
  @REM if no full Windows 10 SDKs were found, unset WindowsSDKDir and exit with error.

  @if "%WindowsSDKVersion%"=="\" (
    @set WindowsSDKNotFound=1
    @set WindowsSDKDir=
    @goto :GetWin10SdkDirExit
  )
)

@if not "%WindowsSDKVersion%"=="\" @set WindowsSDKLibVersion=%WindowsSDKVersion%
@if not "%WindowsSdkDir%"=="" @set WindowsLibPath=%WindowsSdkDir%UnionMetadata;%WindowsSdkDir%References

:GetWin10SdkDirExit

@if "%WindowsSDKNotFound%"=="1" (
  @set WindowsSDKNotFound=
  @exit /B 1
)
@exit /B 0

第一个注册表位置:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值