# This can probably be executed as a script instead of being run by hand, # but odds are something is going wrong, so I wouldn't recommend it. :-) # If this doesn't work for you, feel free to send corrections, but any # issues here do not count as a bug. # Create the directory sudo mkdir /opt/qt-cross sudo chown $USER /opt/qt-cross chmod 0755 /opt/qt-cross # Get MinGW sudo apt install wine64 g++-mingw-w64 sudo update-alternatives --config x86_64-w64-mingw32-gcc # choose posix sudo update-alternatives --config x86_64-w64-mingw32-g++ # choose posix # Build sqlite3 wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz tar axvf sqlite-autoconf-3420000.tar.gz cd sqlite-autoconf-3420000 ./configure --host x86_64-w64-mingw32 --prefix /opt/qt-cross make -j32 make install cd .. # Set up CMake cross-compiler file cat <<'EOF' >/tmp/profile.cmake set(CMAKE_SYSTEM_NAME Windows) set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) set(CMAKE_Fortran_COMPILER ${TOOLCHAIN_PREFIX}-gfortran) set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32) EOF # Build Qt (completely crazy) sudo apt-get build-dep qt6-base sudo apt install qt6-base-dev-tools apt-get source qt6-base cd qt6-base-6.4.2+dfsg wget https://download.firedaemon.com/FireDaemon-OpenSSL/openssl-1.1.1u.zip unzip openssl-1.1.1u.zip mkdir src/3rdparty/sqlite/ cp ../sqlite-autoconf-3420000/sqlite3.[ch] src/3rdparty/sqlite/ ./configure -prefix /opt/qt-cross -no-feature-sql-odbc -platform linux-g++-64 -qt-host-path /usr -xplatform win32-g++ -device-option CROSS_COMPILE=x86_64-w64-mingw32- -release -opengl desktop -nomake examples -no-icu -- -DQT_FORCE_BUILD_TOOLS=ON -DCMAKE_TOOLCHAIN_FILE=/tmp/profile.cmake -DQt6HostInfo_DIR=/usr/lib/x86_64-linux-gnu/cmake/Qt6HostInfo -DOPENSSL_ROOT_DIR=`pwd`/openssl-1.1 -DFEATURE_vulkan=OFF -DFEATURE_tabletevent=OFF ninja ninja install cd .. # Various hacks to get Qt build tools to run properly under Meson ln -s /usr/lib/qt6/libexec/uic /opt/qt-cross/bin/uic cp /usr/lib/gcc/x86_64-w64-mingw32/12-posix/{libstdc++-6,libgcc_s_seh-1}.dll /opt/qt-cross/bin cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll /opt/qt-cross/bin # Build FFmpeg git clone https://git.ffmpeg.org/ffmpeg.git cd ffmpeg ./configure --prefix=/opt/qt-cross --disable-crystalhd --enable-cross-compile --disable-vaapi --disable-vdpau --target-os=mingw64 --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 make -j32 make install cd ..