Skip to content

MSVC and vcpkg

The MSVC lane uses Visual Studio 2022, static vcpkg dependencies, repository toolchain files, and explicit multi-configuration CMake or the maintained msvc-full-features solution.

CMake preset route

In a Visual Studio developer environment with VCPKG_ROOT pointing to a valid checkout:

cmake --preset windows-tiles-sounds-x64-msvc
cmake --build --preset windows-tiles-sounds-x64-msvc
ctest --preset windows-tiles-sounds-x64-msvc

build-scripts/MSVC.cmake, build-scripts/windows-tiles-sounds-x64-msvc.cmake, the vcpkg manifest/triplet, and CMakePresets.json jointly define this route. The simpler windows-x64-msvc preset covers a curses/test configuration.

CI parity

.github/workflows/msvc-full-features.yml is authoritative for the default Windows CI lane, including Visual Studio version, vcpkg commit/triplet, localization artifact, ccache wrapper, solution targets, and test invocation. Local success with different dependency revisions is useful but is not CI parity.

Feature and configuration boundaries

Keep Release, Debug, and RelWithDebInfo artifacts separate. State whether UseSDL3 is true or false; the same project can build distinct SDL2 and SDL3 release packages. PDBs must match the exact binary and commit used for a crash.

Validation and hygiene

Run configure, build, tests, and package smoke tests in the same architecture. Do not commit vcpkg trees, generated solutions outside maintained project files, .vs, PDBs, local presets, or signing material. Preserve the first compiler/linker error and the vcpkg logs.