From f8b45b0c21fa45ca2a8fbf27ddbc76c255eccad1 Mon Sep 17 00:00:00 2001 From: Andrej Dudenhefner Date: Fri, 31 Oct 2025 12:35:25 +0100 Subject: [PATCH 1/3] Add ucrt64 build instructions Link to VCMI_lib: WinSock2 (ws2_32) + socket extensions (mswsock) + Debug Help API (dbghelp) in MinGW --- docs/developers/Building_Windows.md | 17 ++++++++++++----- lib/CMakeLists.txt | 4 ++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/docs/developers/Building_Windows.md b/docs/developers/Building_Windows.md index d76802d9c..61a97f025 100644 --- a/docs/developers/Building_Windows.md +++ b/docs/developers/Building_Windows.md @@ -100,12 +100,19 @@ call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv 4. Right click on `BUILD_ALL` project. This `BUILD_ALL` project should be in `CMakePredefinedTargets` tree in Solution Explorer. You can also build individual targets if you want. 5. VCMI will be built in `%VCMI_DIR%/build/bin/` folder where `` is e.g. `RelWithDebInfo`. To launch the built executables from a file manager, use respective `bat` files, e.g. `VCMI_launcher.bat`. -### Compile VCMI with MinGW via MSYS2 +### Compile VCMI with MinGW64 or UCRT64 via MSYS2 -- Install MSYS2 from -- Start the `MSYS MinGW x64`-shell -- Install dependencies: `pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-boost mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja mingw-w64-x86_64-qt5-static mingw-w64-x86_64-qt5-tools mingw-w64-x86_64-tbb` -- Generate and build solution from VCMI-root dir: `cmake --preset windows-mingw-release && cmake --build --preset windows-mingw-release` +1. Install MSYS2 from +2. Open the correct shell + - For MinGW64 (MSVCRT): start `MSYS2 MinGW x64` + - For UCRT64: start `MSYS2 UCRT64` + + (Sanity check: `echo $MSYSTEM` should be MINGW64 or UCRT64; don’t mix them.) +3. Update MSYS2 packages: `pacman -Syu` +4. Install dependencies + - For MinGW64 (MSVCRT): `pacman -S mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-boost mingw-w64-x86_64-gcc mingw-w64-x86_64-ninja mingw-w64-x86_64-qt5-static mingw-w64-x86_64-qt5-tools mingw-w64-x86_64-tbb` + - For UCRT64: `pacman -S --needed mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-ninja mingw-w64-ucrt-x86_64-boost mingw-w64-ucrt-x86_64-minizip mingw-w64-ucrt-x86_64-ffmpeg mingw-w64-ucrt-x86_64-SDL2_image mingw-w64-ucrt-x86_64-SDL2_mixer mingw-w64-ucrt-x86_64-SDL2_ttf mingw-w64-ucrt-x86_64-qt5-static mingw-w64-ucrt-x86_64-tbb` +5. Generate and build solution from VCMI-root dir: `cmake --preset windows-mingw-release && cmake --build --preset windows-mingw-release` **NOTE:** This will link Qt5 statically to `VCMI_launcher.exe` and `VCMI_Mapeditor.exe`. See [PR #3421](https://github.com/vcmi/vcmi/pull/3421) for some background. diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 074421588..a7fed75ac 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -868,6 +868,10 @@ if(WIN32) OUTPUT_NAME "VCMI_lib" PROJECT_LABEL "VCMI_lib" ) + if (MINGW) + # Link Windows system libs: WinSock2 (ws2_32) + socket extensions (mswsock) + Debug Help API (dbghelp) + target_link_libraries(vcmi PRIVATE ws2_32 mswsock dbghelp) + endif() endif() # Use '-Wa,-mbig-obj' for files that generate very large object files From 38126a989346573e1e1da0645a374e78d4c5bae4 Mon Sep 17 00:00:00 2001 From: Andrej Dudenhefner Date: Sat, 1 Nov 2025 17:52:30 +0100 Subject: [PATCH 2/3] Reformatted using tabs --- lib/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index a7fed75ac..7ff86b3c7 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -868,10 +868,10 @@ if(WIN32) OUTPUT_NAME "VCMI_lib" PROJECT_LABEL "VCMI_lib" ) - if (MINGW) - # Link Windows system libs: WinSock2 (ws2_32) + socket extensions (mswsock) + Debug Help API (dbghelp) - target_link_libraries(vcmi PRIVATE ws2_32 mswsock dbghelp) - endif() + if (MINGW) + # Link Windows system libs: WinSock2 (ws2_32) + socket extensions (mswsock) + Debug Help API (dbghelp) + target_link_libraries(vcmi PRIVATE ws2_32 mswsock dbghelp) + endif() endif() # Use '-Wa,-mbig-obj' for files that generate very large object files From 7fa5b8fc7bde0e9971dd6ea4580aa2f57eb30d97 Mon Sep 17 00:00:00 2001 From: Andrej Dudenhefner Date: Sat, 1 Nov 2025 18:10:04 +0100 Subject: [PATCH 3/3] Removed trailing whitespace --- docs/developers/Building_Windows.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developers/Building_Windows.md b/docs/developers/Building_Windows.md index 61a97f025..da50c01c3 100644 --- a/docs/developers/Building_Windows.md +++ b/docs/developers/Building_Windows.md @@ -106,7 +106,7 @@ call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv 2. Open the correct shell - For MinGW64 (MSVCRT): start `MSYS2 MinGW x64` - For UCRT64: start `MSYS2 UCRT64` - + (Sanity check: `echo $MSYSTEM` should be MINGW64 or UCRT64; don’t mix them.) 3. Update MSYS2 packages: `pacman -Syu` 4. Install dependencies