Win: Preliminary VS 2026 support

There is no CMake version yet that support VS2026, support is
currently limited to ninja based builds.

CMake does not know where to look for the MSVC 2026 Runtime
it copies the wrong CRT leading to startup issues, for this reason
WITH_WINDOWS_BUNDLE_CRT has been disabled for VS2026 + CMake < 4.2.0.
Builds done with VS2026 are for this reason *NOT* distributable to
end users at this point in time.

CMake 4.2.0 Is *expected* to have VS 2026 support [1]

But further testing is likely required.

Things of note:

- They stopped using the "preview" channel and have rebranded to
"Insiders" the make.bat options have been updated accordingly to
select the 2026 Insiders build, you need to pass 2026i to make.bat

- All tests seem to pass on my system

- No new warnings, pretty smooth update

[1] https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11168
This commit is contained in:
Ray Molenkamp
2025-09-11 08:48:53 -06:00
parent 0c75361516
commit d7bcf6e1f9
5 changed files with 23 additions and 1 deletions

View File

@@ -6,6 +6,9 @@ if %ERRORLEVEL% EQU 0 goto DetectionComplete
call "%~dp0\detect_msvc2022.cmd"
if %ERRORLEVEL% EQU 0 goto DetectionComplete
call "%~dp0\detect_msvc2026.cmd"
if %ERRORLEVEL% EQU 0 goto DetectionComplete
echo Compiler Detection failed. Use verbose switch for more information.
exit /b 1

View File

@@ -0,0 +1,3 @@
set BUILD_VS_VER=18
set BUILD_VS_YEAR=2026
call "%~dp0\detect_msvc_vswhere.cmd"

View File

@@ -71,6 +71,14 @@ if NOT "%1" == "" (
) else if "%1" == "2022b" (
set BUILD_VS_YEAR=2022
set VSWHERE_ARGS=-products Microsoft.VisualStudio.Product.BuildTools
) else if "%1" == "2026" (
set BUILD_VS_YEAR=2026
) else if "%1" == "2026i" (
set BUILD_VS_YEAR=2026
set VSWHERE_ARGS=-prerelease
) else if "%1" == "2026b" (
set BUILD_VS_YEAR=2026
set VSWHERE_ARGS=-products Microsoft.VisualStudio.Product.BuildTools
) else if "%1" == "packagename" (
set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -DCPACK_OVERRIDE_PACKAGENAME="%2"
shift /1

View File

@@ -29,6 +29,9 @@ echo - 2019b ^(build with visual studio 2019 Build Tools^)
echo - 2022 ^(build with visual studio 2022^)
echo - 2022pre ^(build with visual studio 2022 pre-release^)
echo - 2022b ^(build with visual studio 2022 Build Tools^)
echo - 2026 ^(build with visual studio 2026^)
echo - 2026i ^(build with visual studio 2026 insiders^)
echo - 2026b ^(build with visual studio 2026 Build Tools^)
echo - clang ^(enable building with clang - default on ARM64^)
echo - msvc ^(enable building with msvc - default on x64, unsupported on ARM64^)