Original: http://techbase.kde.org/Getting_Started/Build/Windows/Cross-Compiling#Toolchain-mingw32.cmake
Toolchain-mingw32.cmake
set(KDE_PREFIX /windows/kde4) set(KDE4_SRC_DIR /home/kdeuser/kde/src) # the name of the target operating system SET(CMAKE_SYSTEM_NAME Windows) # which compilers to use for C and C++ SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc) SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++) # here is the target environment located SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc ${KDE_PREFIX} ) # adjust the default behaviour of the FIND_XXX() commands: # search headers and libraries in the target environment, search # programs in the host environment set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # FindQt4.cmake querys qmake to get information, this doesn't work when crosscompiling set(QT_BINARY_DIR ${KDE4_SRC_DIR}/qt-copy/bin) set(QT_LIBRARY_DIR ${KDE_PREFIX}/lib) set(QT_QTCORE_LIBRARY ${KDE_PREFIX}/lib/libQtCore4.a) set(QT_QTCORE_INCLUDE_DIR ${KDE_PREFIX}/include/QtCore) set(QT_MKSPECS_DIR ${KDE_PREFIX}/mkspecs) set(QT_MOC_EXECUTABLE ${QT_BINARY_DIR}/moc) set(QT_QMAKE_EXECUTABLE ${QT_BINARY_DIR}/qmake) set(QT_UIC_EXECUTABLE ${QT_BINARY_DIR}/uic)
mingw32-kdelibs.cmake
set(KDE_PREFIX /windows/kde4) set(KDE4_BIN_DIR /home/kdeuser/kde/bin) # this one is used by FindKDE4.cmake to load FindKDE4Internal.cmake: set(KDE4_DATA_DIR ${KDE_PREFIX}/share/apps CACHE PATH "points to the apps directory of installed kdelibs") # not sure about this one: set(KDEWIN_DIR ${KDE_PREFIX} CACHE PATH "what is it ?") # disable some things: set(WITH_AVAHI OFF CACHE BOOL "Disabled") set(WITH_DNSSD OFF CACHE BOOL "Disabled") set(WITH_ENCHANT OFF CACHE BOOL "Disabled") set(WITH_FAM OFF CACHE BOOL "Disabled") set(WITH_GSSAPI OFF CACHE BOOL "Disabled") set(WITH_HSPELL OFF CACHE BOOL "Disabled") set(WITH_OpenEXR OFF CACHE BOOL "Disabled") # use the binaries from native KDE4 set(KDE4_KCFGC_EXECUTABLE ${KDE4_BIN_DIR}/kconfig_compiler CACHE PATH "") set(KDE4_AUTOMOC_EXECUTABLE ${KDE4_BIN_DIR}/kde4automoc CACHE PATH "") set(KDE4_MEINPROC_EXECUTABLE ${KDE4_BIN_DIR}/meinproc4 CACHE PATH "")
adjust the values according to your setup
Build kdelibs
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs cd kdelibs mkdir build cd build cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake ..
- you have to make a link to your kde4automoc and kconfig_compiler for linux in the bin directory
ln -s /path/to/kde4automoc bin/ ln -s /path/to/kconfig_compiler bin/
- since linux is case sensitive you have to make symbolic links for some headers
cd /windows/kde4/include ln -s soprano Soprano
- You will get an error in klauncher.moc about slotKDEInitData so go into kinit and do something like this(you need wine)
rm *.moc ../bin/kde4automoc.exe /home/kdeuser/kde/src/KDE/kdelibs/build/kinit/klauncher_automoc.cpp /home/kdeuser/kde/src/KDE/kdelibs/kinit /home/kdeuser/kde/src/KDE/kdelibs/build/kinit /windows/kde4/bin/moc.exe
and then do make as usual
- Another error in kdewidgets because wine doesn't find some dll to run makekdewidgets.exe so either run the linux version manually like this
makekdewidgets -o /home/kdeuser/kde/src/KDE/kdelibs/build/kdewidgets/kdewidgets.cpp /home/kdeuser/kde/src/KDE/kdelibs/kdewidgets/kde.widgets
or symlink those missing library in your wine system32 folder(i haven't tested it but it should work)