@echo off set _Original_Path=%Path% set _VisualStudioVersionNum=%1 set _VisualStudioVersionName= set _VCVARS_Platform=%2 set Configuration=%3 set _WindowsKitVersion=%4 set _Use_vswhere=0 if "%_VisualStudioVersionNum%"=="" ( set _VisualStudioVersionNum=15 ) if "%_VCVARS_Platform%"=="" ( set _VCVARS_Platform=x86 ) if "%Configuration%"=="" ( set Configuration=Release ) if "%_WindowsKitVersion%"=="" ( set _WindowsKitVersion=10.0.17763.0 ) if "%_VisualStudioVersionNum%"=="10" ( set _VisualStudioVersionName=vs2010 set _WindowsKitVersion= set CMakeGenerator=Visual Studio 10 2010 ) else if "%_VisualStudioVersionNum%"=="11" ( set _VisualStudioVersionName=vs2012 set _WindowsKitVersion= set CMakeGenerator=Visual Studio 11 2012 ) else if "%_VisualStudioVersionNum%"=="12" ( set _VisualStudioVersionName=vs2013 set _WindowsKitVersion= set CMakeGenerator=Visual Studio 12 2013 ) else if "%_VisualStudioVersionNum%"=="14" ( set _VisualStudioVersionName=vs2015 set CMakeGenerator=Visual Studio 14 2015 ) else if "%_VisualStudioVersionNum%"=="15" ( set _VisualStudioVersionName=vs2017 set CMakeGenerator=Visual Studio 15 2017 set _Use_vswhere=1 ) else ( echo Usage: %0 ${VisualStudioVersion} ${Platform} ${Configuration} ${WindowsKitVersion} echo Valid values for VisualStudioVersion are as follows. echo * 10 for VS2010 echo * 11 for VS2012 echo * 12 for VS2013 echo * 14 for VS2015 echo * 15 for VS2017 echo Valid values for Platform are x86 and x64. echo Typical values for Configuration are Release and Debug. echo WindowsKitVersion is used only for VS2015 and above. echo It is ignored for other versions, and it allows the Windows echo Kit version to be specified. Typical values are store, 8.1, echo or 10.0.xxxx.0. exit /b 1 ) set VSVer=%_VisualStudioVersionNum% set VSVerName=%_VisualStudioVersionName% set VCPlatformToolset=vc%_VisualStudioVersionNum% set TARGET_PLATFORM=%_VCVARS_Platform% if "%TARGET_PLATFORM%"=="amd64" ( set TARGET_PLATFORM=x64 ) else if "%TARGET_PLATFORM%"=="x86_amd64" ( set TARGET_PLATFORM=x64 ) set COMMON_SDKS_BASE=%ProgramData%\Microsoft\VisualStudio\SDKs set COMMON_SDKS=%COMMON_SDKS_BASE%\%_VisualStudioVersionNum%.0 set COMMON_SDKS_BIN=%COMMON_SDKS%\bin\%TARGET_PLATFORM% set COMMON_SDKS_BIN_X86=%COMMON_SDKS%\bin\x86 set COMMON_SDKS_INCLUDE=%COMMON_SDKS%\include set COMMON_SDKS_LIB=%COMMON_SDKS%\lib\%TARGET_PLATFORM% set vcRegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\%_VisualStudioVersionNum%.0\Setup\VC set RegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\%_VisualStudioVersionNum%.0 if /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" ( set vcRegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%_VisualStudioVersionNum%.0\Setup\VC set RegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\%_VisualStudioVersionNum%.0 ) call :GetVCDir _vcDir if "%_VCVARS_Platform%"=="x64" ( if not exist "%_vcDir%\bin\amd64\vcvars64.bat" ( if exist "%_vcDir%\bin\x86_amd64\vcvarsx86_amd64.bat" ( set _VCVARS_Platform=x86_amd64 ) ) ) call "%_vcDir%\vcvarsall.bat" %_VCVARS_Platform% %_WindowsKitVersion% call :FindDevEnv DevEnvExe set INCLUDE=%COMMON_SDKS_INCLUDE%;%INCLUDE% set LIB=%COMMON_SDKS_LIB%\%Configuration%;%COMMON_SDKS_LIB%;%LIB% set Path=%COMMON_SDKS_BIN%\%Configuration%;%COMMON_SDKS_BIN%;%Path% if "%TARGET_PLATFORM%"=="x64" set Path=%Path%;%COMMON_SDKS_BIN_X86%\%Configuration%;%COMMON_SDKS_BIN_X86% set BOOST_INCLUDEDIR=%COMMON_SDKS_INCLUDE% set BOOST_LIBRARYDIR=%COMMON_SDKS_LIB% set ICU_INCLUDEDIR=%COMMON_SDKS_INCLUDE% set ICU_LIBRARYDIR=%COMMON_SDKS_LIB% GOTO :EOF :GetDirName setlocal set _DirName=%~dp1 set _DirName=%_DirName:~0,-1% endlocal & set %2=%_DirName% exit /B 0 GOTO :EOF :GetVisualStudioInstallDir varName setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION set _InstallDir= if not defined _InstallDir ( echo ######################################## echo Calling 'reg query %RegKey% /v InstallDir' echo ######################################## for /F "skip=2 tokens=2,*" %%D IN ('reg query %RegKey% /v InstallDir 2^>nul') do ( set _InstallDir=%%E ) ) if not defined _InstallDir ( exit /B 1 ) if !_InstallDir:~-1!==\ set _InstallDir=!_InstallDir:~0,-1! endlocal & set %1=%_InstallDir% exit /B 0 GOTO :EOF :GetVCProductDir varName setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION set _ProductDir= if not defined _ProductDir ( echo ######################################## echo Calling 'reg query %vcRegKey% /v ProductDir' echo ######################################## for /F "skip=2 tokens=2,*" %%D IN ('reg query %vcRegKey% /v ProductDir 2^>nul') do ( set _ProductDir=%%E ) ) if not defined _ProductDir ( exit /B 1 ) if !_ProductDir:~-1!==\ set _ProductDir=!_ProductDir:~0,-1! endlocal & set %1=%_ProductDir% exit /B 0 GOTO :EOF :GetVCDir1 varName setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION call :GetVCProductDir _vcDir if not defined _vcDir endlocal & exit /B 1 endlocal & set %1=%_vcDir% exit /B 0 GOTO :EOF :GetVCDir2 varName setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION call :GetVisualStudioInstallDir _vsDir if not defined _vsDir endlocal & exit /B 1 call :GetDirName "%_vsDir%" _vcDir call :GetDirName "%_vcDir%" _vcDir set _vcDir=%_vcDir%\vc endlocal & set %1=%_vcDir% exit /B 0 GOTO :EOF :GetVCDir varName setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION if %_Use_vswhere%==0 goto :oldWay call :findVSWhere _vswhere if not defined _vswhere goto :oldWay for /f "usebackq tokens=*" %%f in (`"%_vswhere%" -version %_VisualStudioVersionNum%.0 -property installationPath`) do set _vcDir=%%f if "%_vcDir%"=="" goto :oldWay set _vcDir=%_vcDir%\VC\Auxiliary\Build endlocal & set %1=%_vcDir% exit /B 0 :oldWay call :GetVCDir1 _vcDir if not defined _vcDir call :GetVCDir2 _vcDir if not defined _vcDir endlocal & exit /B 1 if not exist "%_vcDir%\vcvarsall.bat" ( endlocal exit /B 1 ) endlocal & set %1=%_vcDir% exit /B 0 GOTO :EOF :FindDevEnv varName setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION if defined DevEnvDir endlocal & set %1=%DevEnvDir%\devenv.exe & exit /b 0 for %%f in (devenv.exe) do ( set _devEnv=%%~$PATH:f ) endlocal & set %1=%_devEnv% exit /B 0 GOTO :EOF :FindVSWhere setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION set _vswhere= set _InstallDir= set _regView= if "%PROCESSOR_ARCHITECTURE%"=="x86" ( if "%PROCESSOR_ARCHITEW6432%"=="AMD64" ( set _regView=/reg:64 ) ) set setupRegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup echo ######################################## echo Calling 'reg query %setupRegKey% /v SharedInstallationPath %_regView%' echo ######################################## for /F "skip=2 tokens=2,*" %%D IN ('reg query %setupRegKey% /v SharedInstallationPath %_regView% 2^>nul') do set _InstallDir=%%E if defined _InstallDir goto :foundInstallDir goto :noInstallDir :foundInstallDir call :GetDirName "%_InstallDir%" _vswhere set _vswhere=%_vswhere%\Installer\vswhere.exe if exist "%_vswhere%" goto :foundVSWhere :noInstallDir set _vswhere=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe if exist "%_vswhere%" goto :foundVSWhere set _vswhere=%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe if exist "%_vswhere%" goto :foundVSWhere for %%f in (vswhere.exe) do set _vswhere=%%~$PATH:f if exist "%_vswhere%" goto :foundVSWhere exit /b 1 :foundVSWhere endlocal & set %1=%_vswhere% exit /B 0 GOTO :EOF