After quite some effort I managed to create a Windows build of getfem-python with minimal requirements:
- Visual Studio Community, i.e. VS classic (MSVC cl.exe compiler used for all C++ compilations, cmake+ninja installed as part of VS used for all builds)
- Intel Fortran (ifx compiler is used for compiling mumps)
- Intel oneMKL (used for BLAS/LAPACK in both MUMPS and getfem)
- Python (CPython from python.org) + numpy (installed with pip
)
this is all software I used for the actual compilation and for sorting out all issues

then from the “Intel oneAPI command prompt for Intel 64 for Visual Studio” I run:
git clone https://github.com/scivision/mumps.git
cd mumps
cmake -B build -Dparallel=OFF -DBUILD_COMPLEX=ON -DBUILD_COMPLEX16=ON -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="E:\\opt"
cmake --build build
cmake --install build
cd ..
git clone https://github.com/qhull/qhull.git
cd qhull
git checkout 2020.2
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="E:\\opt"
cmake --build build
cmake --install build
cd..
git clone https://git.savannah.nongnu.org/git/getfem.git
cd getfem
# edit gmm/gmm_std.h and remove lines mentioning _SCL_SECURE_NO_DEPRECATE
# edit CMakeLists.txt and fix the if condtion about ENABLE_MULTITHREADED_BLAS, add the GENERATE_GETFEM_IM_LIST_H option, and fix missing mumps libraries
# edit interface/src/python/getfem_python.c to replace VLA "d" with malloced array
# edit src/getfem/bgeot_small_vector.h and src/bgeot_small_vector.cc to exclude use of static member palloc outside of the compilation unit
# move implementations that use static members from src/getfem/getfem_mesh_slicer.h to src/getfem_mesh_slicer.cc
# edit getfem/getfem_global_function.h and change struct to class in abstract_xy_function definition
cmake -B build -G Ninja -DENABLE_PYTHON=ON -DGENERATE_GETFEM_IM_LIST_H=OFF -DENABLE_MULTITHREADED_BLAS=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON -DMUMPS_LIB_DIR="E:\\opt\\lib" -DMUMPS_INC_DIR="E:\\opt\\include" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="E:\\opt"
cmake --build build
cmake --install build
and after moving some library files manually

it works
Note:
For setting up the Windows 11 Virtual Machine on Linux, I used Windows 11 Guest VM with VirtIO on Libvirt - Kevin Locke's Homepage and Windows 11 on KVM – How to Install Step by Step? – GetLabsDone
This link was useful for getting rid of a lot of the bloatware windows comes with https://4sysops.com/archives/remove-provisioned-built-in-apps-in-windows-10/
