Contents |
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
| Tutorial Series | Démarrer avec KDE |
| Previous | Getting Started/Build/KDE4 |
| What's Next | n/a |
| Further Reading | Présentation Originale par David Faure |
Le temps est précieux. Ce tutorial présente l'expérience accumulée par David Faure sur la manière de tirer parti au mieux de son temps et de ses efforts en économisant les deux à l'aide de simples scripts et techniques lors du développement de KDE 4.
Si vous voulez vraiment utiliser un compte séparé pour le développement, voyez ici.
Mais pour économiser du temps et de nombreux problèmes, il est fortement recommandé de tout faire avec votre utilisateur courant. Tout ce dont vous avez besoin est un moyen simple de basculer entre les environnements. Allez dans ~/kde/src/4, vous voulez être dans l'environnement kde4, pas vrai?
Pour cela, copiez http://web.davidfaure.fr/scripts/cd_function dans votre .zshrc ou .bashrc, et téléchargez http://web.davidfaure.fr/scripts/findup quelquepart dans votre $PATH (par exemple dans $HOME/bin ou /usr/local/bin).
Comme ça, lorsque vous entrez dans un répertoire, le fichier .my-setup sera recherché et sourcé (cela recherche aussi dans les répertoires parents jusqu'à le trouver, et cela ne source pas deux fois le même d'affilé)
Specifiez toutes les variables d'environnement spécifiques à KDE4 (elles seront détaillées plus tard dans cette page) dans ce fichier ~/kde/src/4/.my-setup, et faites de même pour les autres environnements si nécessaire (kde3, et partout où vous avez besoin de variables d'environnement propres à projet).
Pour Qt, par habitude de l'époque kde3 et pour gagner du temps en évitant un "make install" après un changement, je recommande d'utiliser un répertoire pour les sources, le build, et l'install. Cela se fait en configurant Qt avec --prefix=$PWD. Ce n'est cependant pas obligatoire.
Qt-Path: ~/qt/4/qt-copy
C'était pratique dans kde3, c'est devenu obligatoire dans kde4: vous avez besoin de séparer les sources du build, c'est à dire les mettre dans des répertoires différents. Cela facilite le rebuild depuis zéro, en supprimant tous les fichiers générés -même les vieux que "make clean" ne supprimerait pas. Il est plus facile de regarder dans les fichiers sources (grep,ls ... etc). Cela permet d'avoir plusieurs arbres de build avec des paramètres différents, par exemple "debug" et "release".
Donc les sources des modules pour kde4 sont récupérés dans ~/kde/src/4/ et le build a lieu dans ~/kde/build/4/.
Si vous utilisez bash, jettez un oeil à ce .bashrc. C'est un exemple de configuration pour bash qui met en place toutes les variables d'environnement pour KDE4 et d'autres fonctions utiles. Vous pouvez aussi regarder ces scripts qui sont basés sur le .bashrc ci-dessus.
Les étapes ci-dessous décrivent quelques-unes de ces fonctionnalités ainsi que des alternatives et des fonctions additionnelles.
En lire plus sur compiler un module KDE.
Pour aller et venir facilement entre le répertoire des sources et de build, vous pouvez utiliser les fonctions cs et cb qui marchent ainsi:
pwd
~/kde/src/4/kdebase
cb && pwd
~/kde/build/4/kdebase # notez que ce répertoire est créé s'il n'existe pas
cs && pwd
~/kde/src/4/kdebase
Un certain nombre de scripts liés à kde devront pouvoir faire la même chose. Faites donc: export OBJ_REPLACEMENT='s#/kde/src/#/kde/build/#' Cela permet au script makeobj de kdesdk de passer de src à build. Si vous faites aussi: alias make=makeobj alors vous pouvez simplement taper "make" depuis le répertoire des sources et le build pourra se faire. C'est aussi très utile dans les éditeurs - si votre vi ou emacs utilise makeobj comme commande make, vous pouvez compiler d'une simple touche.
De plus, pour une navigation rapide vers d'autres répertoires, il est très pratique de pouvoir écrire "cs 4/kdelibs" pour aller à ~/src/4/kdelibs, de n'importe où. Par exemple vous pouvez être dans ~/kde/src/4/kdebase/workspace/kcontrol et vous décidez maintenant de regardez kdecore... Pas besoin de taper une longue série de "../.." ou de recommencer depuis le sommet. Vous pouvez simplement taper cs 4/kdelibs/kdecore.
C'est faisable à l'aide des deux fonctions cs et cb definies dans le .bashrc.
Le code suivant permet d'utiliser cd comme cs décrit ci-dessus:
export CDPATH=.:~/kde/src
L'avantage d'utliser zsh est que la complétion fonctionne correctement. Essayez cd 4/kdemul et appuyez sur Tab, cela va completer en 4/kdemultimedia, peu importe où vous êtes. Cela ne marche pas dans bash par contre -mais de toutes façons vous utilisez zsh dès à présnet, n'est-ce pas? :)
Les alias minimums pour cs et cb (comme au-dessus mais sans support pour des arguments) sont: alias cb='cd `pwd | sed -e s,/kde/src/,/kde/build/,`' alias cs='cd `pwd | sed -e s,/kde/build/,/kde/src/,`'
Revenir dans le répertoire précédent peut facilement se faire avec zsh. Mettez ceci dans .zshrc:
setopt AUTO_PUSHD
alias p=popd
et vous pouvez ensuite tapez "p" pour revenir à votre répertoire précédent, autant de fois que nécessaire (tapes "dirs -v" pour voir la liste des répertoires précédents).
Vous pouvez trouver ici plus d'informations sur CMake.
cd 4/kdelibs/kio/kio ; make => rien ne se passe, le Makefile est dans le répertoire parent.
Faites utiliser à l'éditeur un script enveloppe à la place:
if test "$1" = "-k"; then shift; fi cmake_in_parent=0 if test -f CMakeLists.txt; then
if ! grep -q kde4_add CMakeLists.txt; then
cmake_in_parent=1
cd ..
fi
fi if test $# -gt 0; then
arg="$1"
if test "$arg" != install -a $cmake_in_parent -eq 1; then
arg=`basename $PWD`/"$arg"
fi
fi
jvalue=1 echo "calling makeobj -j $jvalue $arg" makeobj -j $jvalue $arg
Obtenir ce script: http://web.davidfaure.fr/scripts/makefromemacs.
touch kdecore/kapplication.h cd kdeui ; make
=> recompile kdecore d'abord
touch kdecore/kapplication.h cd kdeui ; make kdeui/fast
=> recompile seulement kdeui
make install/fast
Mais notez que le code normal (sans /fast) est aussi utile dans d'autres cas: Par exemple éditez
kdelibs/kio/kio/kdirmodel.cpp
et le test unitaire correspondant
kdelibs/kio/tests/kdirmodeltest.cpp
Puis, pour recompiler à la fois libkio et le test unitaire, faites simplement "make kdirmodeltest" depuis kdelibs/kio/tests.
Ceci liste toutes les variables d'environnement que vous devriez mettre en place, par exemple dans $KDESRC/4/.my-setup
export QTDIR=/d/qt/4/qt-copy
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$QTDIR/lib:$PKG_CONFIG_PATH
export KDEDIR=/d/kde/inst/kde4
export PATH=$KDEDIR/bin:$PATH
export LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$KDEDIR/lib/kde4/plugins
export KDEDIRS=$KDEDIR
export KDEHOME=$HOME/.kde4
export QTEST_COLORED=1
export KDE_COLOR_DEBUG=1
Si vous utilisez un ~/.bashrc cité précedemment il est très facile de compiler un module KDE (il est requis d'avoir préalablement récupérer le code source, par ex. via SVN. voir Using Subversion with KDE):
cs KDE/kdebase
cmakekde
Sinon vous devrez faire ceci:
mkdir -p ~/build/KDE/kdebase && cd ~/build/KDE/kdebase
cmake -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull \
-DCMAKE_INSTALL_PREFIX=~/kde ~/src/KDE/kdebase
make
| Warning |
|---|
| Ne jamais supprimer CMakeCache.txt puis taper make; toujours ré-executez cmake avec les bonnes options après avoir supprimer CMakeCache.txt. |
kdesvn-build est un script tout-en-un: il gère la récupération des sources ou leur mise à jour depuis subversion, l'éxecution de cmake, make, make install, et le stockage de l'output dans les fichiers logs.
Copiez kdesvn-buildrc-sample en $KDE_SRC/.kdesvn-buildrc, puis éditez-le. Options globales:
Options par module:
module qt-copy # kdesvn-build ajoute le préfixe à $qtdir configure-flags [....] apply-qt-patches true make-options -j3 sub-src sub-tools end module module kdelibs make-options -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull end module
Xephyr -screen 1240x768 -ac :4 & export DISPLAY=:4 sh -x startkde 2>&1 | tee kde4.log
>./list-kde4-binaries /d/kde/inst/kde4/bin/kwin, pid 6756 /d/kde/inst/kde4/bin/kpersonalizer, pid 6757
>./kill-kde4-binaries Killing /d/kde/inst/kde4/bin/kwin, pid 6756 Killing /d/kde/inst/kde4/bin/kpersonalizer, pid 6757
Vous pouvez obtenir les scripts list-kde4-binaries et kill-kde4-binaries dans http://web.davidfaure.fr/scripts/