From 7164a0cab650bdf01cdcbc3da690f6b674fcc7b3 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:30:23 +0000 Subject: [PATCH] build: Bump VS minimum supported version to 18.3 --- .github/ci-windows.py | 2 +- .github/workflows/ci.yml | 6 +++--- CMakePresets.json | 12 ++++++------ doc/build-windows-msvc.md | 20 ++++++++++---------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/ci-windows.py b/.github/ci-windows.py index cbb5b27f242..ee3000ed2ea 100755 --- a/.github/ci-windows.py +++ b/.github/ci-windows.py @@ -45,7 +45,7 @@ def generate(ci_type): "build", "-Werror=dev", "--preset", - "vs2022", + "vs2026", ] + GENERATE_OPTIONS[ci_type] run(command) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f5299cfbd1..e59c64b9508 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -204,7 +204,7 @@ jobs: windows-native-dll: name: ${{ matrix.job-name }} - runs-on: windows-2022 + runs-on: windows-2025-vs2026 if: ${{ vars.SKIP_BRANCH_PUSH != 'true' || github.event_name == 'pull_request' }} @@ -218,9 +218,9 @@ jobs: job-type: [standard, fuzz] include: - job-type: standard - job-name: 'Windows native, VS 2022' + job-name: 'Windows native, VS' - job-type: fuzz - job-name: 'Windows native, fuzz, VS 2022' + job-name: 'Windows native, fuzz, VS' steps: - *ANNOTATION_PR_NUMBER diff --git a/CMakePresets.json b/CMakePresets.json index ae9d06dafa4..a7103e2902d 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -2,14 +2,14 @@ "version": 3, "configurePresets": [ { - "name": "vs2022", - "displayName": "Build using 'Visual Studio 17 2022' generator and 'x64-windows' triplet", + "name": "vs2026", + "displayName": "Build using 'Visual Studio 18 2026' generator and 'x64-windows' triplet", "condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "Windows" }, - "generator": "Visual Studio 17 2022", + "generator": "Visual Studio 18 2026", "architecture": "x64", "toolchainFile": "$env{VCPKG_ROOT}\\scripts\\buildsystems\\vcpkg.cmake", "cacheVariables": { @@ -19,14 +19,14 @@ } }, { - "name": "vs2022-static", - "displayName": "Build using 'Visual Studio 17 2022' generator and 'x64-windows-static' triplet", + "name": "vs2026-static", + "displayName": "Build using 'Visual Studio 18 2026' generator and 'x64-windows-static' triplet", "condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "Windows" }, - "generator": "Visual Studio 17 2022", + "generator": "Visual Studio 18 2026", "architecture": "x64", "toolchainFile": "$env{VCPKG_ROOT}\\scripts\\buildsystems\\vcpkg.cmake", "cacheVariables": { diff --git a/doc/build-windows-msvc.md b/doc/build-windows-msvc.md index 5b75a62f8a4..17adb779758 100644 --- a/doc/build-windows-msvc.md +++ b/doc/build-windows-msvc.md @@ -10,11 +10,11 @@ For cross-compiling options, please see [`build-windows.md`](./build-windows.md) This guide relies on using CMake and vcpkg package manager provided with the Visual Studio installation. Here are requirements for the Visual Studio installation: -1. Minimum required version: Visual Studio 2022 version 17.13. +1. Minimum required version: Visual Studio 2026 version 18.3. 2. Installed components: - The "Desktop development with C++" workload. -The commands in this guide should be executed in "Developer PowerShell for VS 2022" or "Developer Command Prompt for VS 2022". +The commands in this guide should be executed in "Developer PowerShell for VS" or "Developer Command Prompt for VS". The former is assumed hereinafter. ### 2. Git @@ -54,8 +54,8 @@ Run `cmake -B build -LH` to see the full list of available options. ### 4. Building with Static Linking with GUI -``` -cmake -B build --preset vs2022-static # It might take a while if the vcpkg binary cache is unpopulated or invalidated. +```powershell +cmake -B build --preset vs2026-static # It might take a while if the vcpkg binary cache is unpopulated or invalidated. cmake --build build --config Release # Append "-j N" for N parallel jobs. ctest --test-dir build --build-config Release # Append "-j N" for N parallel tests. cmake --install build --config Release # Optional. @@ -63,8 +63,8 @@ cmake --install build --config Release # Optional. ### 5. Building with Dynamic Linking without GUI -``` -cmake -B build --preset vs2022 -DBUILD_GUI=OFF # It might take a while if the vcpkg binary cache is unpopulated or invalidated. +```powershell +cmake -B build --preset vs2026 -DBUILD_GUI=OFF # It might take a while if the vcpkg binary cache is unpopulated or invalidated. cmake --build build --config Release # Append "-j N" for N parallel jobs. ctest --test-dir build --build-config Release # Append "-j N" for N parallel tests. ``` @@ -79,7 +79,7 @@ specify a shorter path to store intermediate build files by using the [`--x-buildtrees-root`](https://learn.microsoft.com/en-us/vcpkg/commands/common-options#buildtrees-root) option: ```powershell -cmake -B build --preset vs2022-static -DVCPKG_INSTALL_OPTIONS="--x-buildtrees-root=C:\vcpkg" +cmake -B build --preset vs2026-static -DVCPKG_INSTALL_OPTIONS="--x-buildtrees-root=C:\vcpkg" ``` If vcpkg installation fails with the message "Paths with embedded space may be handled incorrectly", which @@ -87,17 +87,17 @@ can occur if your local Bitcoin Core repository path contains spaces, you can ov by setting the [`VCPKG_INSTALLED_DIR`](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/users/buildsystems/cmake-integration.md#vcpkg_installed_dir) variable: ```powershell -cmake -B build --preset vs2022-static -DVCPKG_INSTALLED_DIR="C:\path_without_spaces" +cmake -B build --preset vs2026-static -DVCPKG_INSTALLED_DIR="C:\path_without_spaces" ``` ## Performance Notes ### 7. vcpkg Manifest Default Features -One can skip vcpkg manifest default features to speedup the configuration step. +One can skip vcpkg manifest default features to speed up the configuration step. For example, the following invocation will skip all features except for "wallet" and "tests" and their dependencies: ``` -cmake -B build --preset vs2022 -DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON -DVCPKG_MANIFEST_FEATURES="wallet;tests" -DBUILD_GUI=OFF -DWITH_ZMQ=OFF +cmake -B build --preset vs2026 -DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON -DVCPKG_MANIFEST_FEATURES="wallet;tests" -DBUILD_GUI=OFF -DWITH_ZMQ=OFF ``` Available features are listed in the [`vcpkg.json`](/vcpkg.json) file.