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.