You need to download msvc and the winsdk I used git@github.com:mstorsjo/msvc-wine.git Assume that you've installed at "${MSVC}" == Build with MSVC using wine $ mkdir build-msvc $ cd build-msvc $ export PATH="${MSVC}/bin/x64:/usr/bin:$PATH" $ CC=cl CXX=cl cmake -S .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_MAKE_PROGRAM=/usr/bin/make === Build with clang-cl without wine $ sudo apt-get install clang-cl llvm # I used clang-cl-18 $ mkdir build-clang-cl $ cd build-clang-cl $ export INCLUDE="${MSVC}/vc/tools/msvc/14.44.35207/include;${MSVC}/kits/10/include/10.0.26100.0/shared;${MSVC}/kits/10/include/10.0.26100.0/ucrt;${MSVC}/kits/10/include/10.0.26100.0/um" $ export LIB="${MSVC}/vc/tools/msvc/14.44.35207/lib/x64;${MSVC}/kits/10/lib/10.0.26100.0/ucrt/x64;${MSVC}/kits/10/lib/10.0.26100.0/um/x64" $ cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_SYSTEM_NAME=Windows \ -DCMAKE_C_COMPILER=clang-cl-18 \ -DCMAKE_CXX_COMPILER=clang-cl-18 \ -DCMAKE_LINKER=lld-link-18 \ -DCMAKE_MT=llvm-mt-18 \ -DCMAKE_RC_COMPILER=llvm-rc-18 === Build with native clang cross compiling for windows $ export INCLUDE="${MSVC}/vc/tools/msvc/14.44.35207/include;${MSVC}/kits/10/include/10.0.26100.0/shared;${MSVC}/kits/10/include/10.0.26100.0/ucrt;${MSVC}/kits/10/include/10.0.26100.0/um" $ export LIB="${MSVC}/vc/tools/msvc/14.44.35207/lib/x64;${MSVC}/kits/10/lib/10.0.26100.0/ucrt/x64;${MSVC}/kits/10/lib/10.0.26100.0/um/x64" $ cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../cmake/clang-windows-toolchain.cmake --- new method === MSVC using wine $ cmake -DMSVC_WINE_DIR="${MSVC}" -DMSVC_WINE_COMPILER=cl .. === clang-cl $ cmake -DMSVC_WINE_DIR="${MSVC}" -DMSVC_WINE_COMPILER=clang-cl .. === clang cross $ cmake -DMSVC_WINE_DIR="${MSVC}" -DMSVC_WINE_COMPILER=clang ..