Last active
March 20, 2026 11:45
-
-
Save BeErikk/786df70f63c578a8acfeb75c0da60e64 to your computer and use it in GitHub Desktop.
Windows console script to enable the MS compiler with custom environment settings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @echo off | |
| ::@title MS C++ compiler | |
| :: Windows console script to enable the MS compiler with custom environment settings | |
| :: Jerker Bäck 2017 | |
| :: delims:vv vvv vv v | |
| :: line : PlatformIdentity = "UAP, Version=10.0.19041.0" | |
| :: tokens: ^1 ^2 ^3 ^4 | |
| setlocal | |
| ::set WSL="C:\Windows\System32\wsl.exe" | |
| set vswhereprog="C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" | |
| %vswhereprog% -latest -property installationPath | wsl.exe sed 's:\\:/:g' | wsl.exe tr -d '\r\n' > %TEMP%\vspath.tmp | |
| endlocal | |
| set /p vsinstalldir=<%TEMP%\vspath.tmp | |
| set /p vctoolsversion=<"%vsinstalldir%/VC/Auxiliary/Build/Microsoft.VCToolsVersion.default.txt" | |
| echo %vctoolsversion%|wsl.exe tr -d '\r\n' > %TEMP%\vspath.tmp | |
| set /p vctoolsversion=<%TEMP%\vspath.tmp | |
| set vctools=%vsinstalldir%/VC/Tools/MSVC/%vctoolsversion%/ | |
| reg.exe query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows Kits\Installed Roots" -f KitsRoot10 | wsl.exe sed -n 's:.*REG_SZ *\([[:print:]]*\).*:\1:p' | wsl.exe sed 's:\\:/:g' | wsl.exe tr -d '\r\n' > %TEMP%\vspath.tmp | |
| set /p kitsroot10=<%TEMP%\vspath.tmp | |
| for /f "tokens=4 delims=^=," %%i in ('find.exe "PlatformIdentity" ^< "%kitsroot10%SDKManifest.xml"') do set kitsversion=%%i | |
| set kitsversion=%kitsversion:"=% | |
| echo %kitsversion%|wsl.exe tr -d ' \r\n' > %TEMP%\vspath.tmp | |
| set /p kitsversion=<%TEMP%\vspath.tmp | |
| del %TEMP%\vspath.tmp | |
| set userlib=F:/libraries/ | |
| @echo. | |
| echo Using MSVCtools version: %vctoolsversion% | |
| echo Using Windows SDK version: %kitsversion% | |
| @echo. | |
| set INCLUDE=%vctools%include;%vctools%atlmfc/include;%kitsroot10%Include/%kitsversion%/ucrt;%kitsroot10%Include/%kitsversion%/um;%kitsroot10%Include/%kitsversion%/shared;%kitsroot10%Include/%kitsversion%/km;%kitsroot10%Include/%kitsversion%/winrt;%kitsroot10%Include/%kitsversion%/cppwinrt;%vsinstalldir%/VC/Auxiliary/VS/include;%vsinstalldir%/VC/Auxiliary/VS/UnitTest/include;%userlib%include;%userlib%include/ntnative;%userlib%include/wtl; | |
| set LIB64=%vctools%lib/x64;%vctools%atlmfc/lib/x64;%kitsroot10%Lib/%kitsversion%/ucrt/x64;%kitsroot10%Lib/%kitsversion%/um/x64;%kitsroot10%Lib/%kitsversion%/km/x64;%vsinstalldir%/VC/Auxiliary/VS/UnitTest/lib/x64;%userlib%lib/x64; | |
| set LIB32=%vctools%lib/x86;%vctools%atlmfc/lib/x86;%kitsroot10%Lib/%kitsversion%/ucrt/x86;%kitsroot10%Lib/%kitsversion%/um/x86;%kitsroot10%Lib/%kitsversion%/km/x86;%vsinstalldir%/VC/Auxiliary/VS/UnitTest/lib/x86;%userlib%lib/x86; | |
| set PATHVS=%vsinstalldir%/Common7/IDE;%vsinstalldir%/Common7/Tools;%vsinstalldir%/Common7/IDE/VC/VCPackages;%vsinstalldir%/Common7/IDE/CommonExtensions/Microsoft/TestWindow; | |
| set PATH64=%vctools%bin/HostX64/x64;%kitsroot10%bin/%kitsversion%/x64;%kitsroot10%bin/x64; | |
| set PATH32=%vctools%bin/Hostx86/x86;%kitsroot10%bin/%kitsversion%/x86;%kitsroot10%bin/x86; | |
| set orgPATH=%PATH% | |
| if /i "%1"=="x86" ( call :32bitenviron ) else ( call :64bitenviron ) | |
| if errorlevel 1 goto Failed | |
| set LIBPATH=%LIB% | |
| goto :eof | |
| :: ----------------------------------------------------------------------------- | |
| :64bitenviron | |
| @title MS C++ compiler 64-bit environment | |
| echo Using 64-bit environment - use "mscompiler x86" for 32-bit | |
| set LIB=%LIB64% | |
| set PATH=%PATH64%;%PATHVS%;%PATH% | |
| set _CL_=-link -subsystem:console -machine:x64 | |
| @exit /B 0 | |
| :: ----------------------------------------------------------------------------- | |
| :32bitenviron | |
| @title MS C++ compiler 32-bit environment | |
| echo Using 32-bit environment | |
| set LIB=%LIB32% | |
| set PATH=%PATH32%;%PATHVS%;%PATH% | |
| set _CL_=-link -subsystem:console -machine:x86 | |
| @exit /B 0 | |
| :: ----------------------------------------------------------------------------- | |
| :Failed | |
| @echo. | |
| @echo =============================================================================== | |
| @echo. | |
| @echo Error: compiler script failed | |
| @echo. | |
| @echo =============================================================================== | |
| @echo. |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
JFYI:
F:/libraries/is the place i keep track of my external libraries, typically by symlinks toF:/libraries/includeExample Microsoft WIL:
Path to git repo:
F:\libraries\ui\wil\wilsymlink:
mklink /D "F:\libraries\include\wil" "..\ui\wil\wil\include\wil"