CMake for Building KDE under Windows

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值