Getting Started/Build/Windows/Cross-Compiling: Difference between revisions

    From KDE TechBase
    (New page: {{improve|cross compiling is still unstable}} {{KDE4}} ==Basic tools== ===MinGw=== Install mingw for linux, on debian the packages are called mingw32, mingw32-binutils, mingw32-runtime, y...)
     
    Line 72: Line 72:
    mkdir build
    mkdir build
    cd build
    cd build
    export QMAKESPEC=win32-g++
    cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake  ..
    cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-mingw32.cmake  ..
    </code>
    </code>

    Revision as of 17:34, 10 March 2008

    Warning
    This section needs improvements: Please help us to

    cleanup confusing sections and fix sections which contain a todo


    cross compiling is still unstable
    Tip
    Note: This page is about KDE 4. It isn't applicable for KDE 3 development.

    Basic tools

    MinGw

    Install mingw for linux, on debian the packages are called mingw32, mingw32-binutils, mingw32-runtime, you need to install mingw32 with gcc/g++ 3 and not 4 since that doesn't work with kdelibs, debian testing/unstable has gcc 4 so i've installed mingw32 package from ubuntu repository

    Qt4 Kdesupport and dependencies

    You can install these dependencies(aspell, boost, dbus, qca etc..) from windows with the kdewin installer or manually download them from sourceforge mirrors

    Qt4 and KDE4 for linux

    You also need to have Qt4 and KDE4 already installed on linux, to use moc/uic/kde4automoc etc...

    Cmake

    To cross compile kde you need cmake >= 2.5, you can get the last version from CVS

    • Create a file Toolchain-mingw32.cmake with this content and place it somewhere i.e. in your home

    1. the name of the target operating system

    SET(CMAKE_SYSTEM_NAME Windows)

    1. which compilers to use for C and C++

    SET(CMAKE_C_COMPILER i586-mingw32msvc-gcc) SET(CMAKE_CXX_COMPILER i586-mingw32msvc-g++)

    1. here is the target environment located

    SET(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc /windows/kde4 )

    1. adjust the default behaviour of the FIND_XXX() commands:
    2. search headers and libraries in the target environment, search
    3. 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)

    set(KDE4_INSTALL_DIR /windows/kde4) set(QT_BINARY_DIR /home/kdeuser/kde/src/qt-copy/bin)


    set(CMAKE_MODULE_PATH ${KDE4_INSTALL_DIR}/share/apps/cmake/modules) set(CMAKE_INSTALL_PREFIX ${KDE4_INSTALL_DIR}) set(LIB_INSTALL_DIR ${KDE4_INSTALL_DIR}/lib)

    set(QT_LIBRARY_DIR ${KDE4_INSTALL_DIR}/lib) set(QT_QTCORE_LIBRARY ${KDE4_INSTALL_DIR}/lib/libQtCore4.a) set(QT_QTCORE_INCLUDE_DIR ${KDE4_INSTALL_DIR}/include/QtCore) set(QT_MKSPECS_DIR ${KDE4_INSTALL_DIR}/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)

    set(KDE4_DATA_DIR ${KDE4_INSTALL_DIR}/share/apps) set(KDE4_LIB_INSTALL_DIR ${KDE4_INSTALL_DIR}/lib) set(KDE4_INCLUDE_DIR ${KDE4_INSTALL_DIR}/include) set(KDE4_KDECORE_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkdecore.dll.a) set(KDE4_KDE3SUPPORT_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkde3support.dll.a) set(KDE4_KDEUI_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkdeui.dll.a) set(KDE4_KIO_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkio.dll.a) set(KDE4_KDNSSD_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkdnssd.dll.a) set(KDE4_KFILE_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkfile.dll.a) set(KDE4_KHTML_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkhtml.dll.a) set(KDE4_KNEWSTUFF2_LIBRARY ${KDE4_INSTALL_DIR}/lib/libknewstuff2.dll.a) set(KDE4_KNOTIFYCONFIG_LIBRARY ${KDE4_INSTALL_DIR}/lib/libknotifyconfig.dll.a) set(KDE4_KPARTS_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkparts.dll.a) set(KDE4_KTEXTEDITOR_LIBRARY ${KDE4_INSTALL_DIR}/lib/libktexteditor.dll.a) set(KDE4_KUTILS_LIBRARY ${KDE4_INSTALL_DIR}/lib/libkutils.dll.a) set(KDE4_PHONON_LIBRARY ${KDE4_INSTALL_DIR}/lib/libphonon.dll.a) set(KDE4_SOLID_LIBRARY ${KDE4_INSTALL_DIR}/lib/libsolid.dll.a) 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 for linux in the bin directory

    ln -s /path/to/kde4automoc bin/

    • since linux is case sensitive you have to make symbolic links for some headers

    cd /usr/i586-mingw32msvc/include ln -s userenv.h Userenv.h ln -s windows.h Windows.h cd /windows/kde4/include ln -s soprano Soprano