How to use MXE to cross-build kst for Windows ============================================= Note this is WIP and unofficial, provided FWIW by Tormod Volden 1. ADD MXE REPOSITORY ===================== (See https://mxe.cc/ for details) echo "deb https://pkg.mxe.cc/repos/apt focal main" | sudo tee /etc/apt/sources.list.d/mxeapt.list sudo apt-key add mxeapt.gpg # gotten from https://pkg.mxe.cc/repos/apt/client-conf/ sudo apt update 2. INSTALL PREBUILT LIBRARIES FROM MXE ====================================== sudo apt install mxe-x86-64-w64-mingw32.shared-netcdf sudo apt install mxe-x86-64-w64-mingw32.shared-qt5 sudo apt install mxe-x86-64-w64-mingw32.shared-gsl 3a. INSTALL MY PREBUILT LIBRARIES ================================= Download and install my prebuilt packages (using dpkg -i): - mxe-x86-64-w64-mingw32.shared-libgetdata_0.11.0-focal-build-2023-03-09-tormod_amd64.deb - mxe-x86-64-w64-mingw32.shared-libnetcdf-cxx-legacy_4.2-focal-build-2021-03-14-tormod_amd64.deb - mxe-x86-64-w64-mingw32.shared-cfitsio_3410-focal-build-2021-03-14-tormod_amd64.deb - mxe-x86-64-w64-mingw32.shared-matio_1.5.23-focal-build-2023-03-09-tormod_amd64.deb 3b. (alternatively) BUILD LIBRARIES NOT (YET?) IN MXE ======================================== (not needed if you download my prebuilt mxe-* packages instead!) export PATH=/usr/lib/mxe/usr/bin:$PATH # Get and unpack the getdata-0.11.0 zip for Windows mkdir build && cd build && x86_64-w64-mingw32.shared-cmake ../getdata-0.11.0/cmake make make DESTDIR=$PWD/mxe-x86-64-w64-mingw32.shared-libgetdata install # netcdf-cxx 4.2 (legacy) mkdir build && cd build && ../netcdf-cxx-4.2/configure --host=x86_64-w64-mingw32.shared --prefix=/usr/lib/mxe/usr/x86_64-w64-mingw32.shared make make DESTDIR=$PWD/mxe-x86-64-w64-mingw32.shared-libnetcdf-cxx-legacy install # matio (shared, note that a static 1.5.2 is already in MXE) ac_cv_va_copy=C99 ../matio-1.5.19/configure --host=x86_64-w64-mingw32.shared --prefix=/usr/lib/mxe/usr/x86_64-w64-mingw32.shared --disable-static make make DESTDIR=$PWD/mxe-x86-64-w64-mingw32.shared-matio install cfitsio (shared, note that a static 3410 is already in MXE) x86_64-w64-mingw32.shared-cmake ../cfitsio-3410 make # similar for all above: make deb package out of it mkdir -p mxe-x86-64-w64-mingw32.shared-cfitsio/DEBIAN vi mxe-x86-64-w64-mingw32.shared-cfitsio/DEBIAN/control make DESTDIR=mxe-x86-64-w64-mingw32.shared-cfitsio install fakeroot dpkg-deb --build mxe-x86-64-w64-mingw32.shared-cfitsio .. 4. BUILD KST ============ export PATH=/usr/lib/mxe/usr/bin:$PATH # Generate makefiles and check all plugins are enabled (libraries detected) x86_64-w64-mingw32.shared-cmake ../../../kst-git -Dkst_qt5=/usr/lib/mxe -Dkst_cross=x86_64-w64-mingw32.shared -Dkst_version_string=2.0.x-2021.03.14-09.31 -Dkst_release=1 -Dkst_merge_files=1 # WIP: something is wrong in cmake or xme wrapper: # dependent libraries not being added to the list of libraries in linklibs.rsp # add missing -hdf5 dependency: sed -i 's/$/ -lhdf5/' src/datasources/CMakeFiles/kst2_datasource_hdf5.dir/linklibs.rsp make VERBOSE=1 # WIP: make install doesn't add all libraries? # workaround: add dlls to misc/cmake_install.cmake # see the last lines of my modfied one make install LINKS ===== https://mxe.cc/ https://github.com/zer0main/battleship/blob/master/build/windows/requirements.sh https://blog.rubenwardy.com/2018/05/07/mingw-copy-dlls/