Getting Started/Set up KDE 4 for development (ca)

< Getting Started
Revision as of 18:28, 15 September 2008 by Dhaumann (Talk | contribs)

Jump to: navigation, search


Contents

Getting_Started/Set_up_KDE_4_for_development

Configurar KDE 4 per al desenvolupament
Sèrie de Tutorials   Començant
Prerequisits   Compilant KDE 4
Què ve després   Altres temes de desenvolupament
Referències   n/a
Template:Note(ca)

Executant aplicacions i sessions de KDE 4

Quan comences el desenvolupament per a KDE 4, hi ha generalment tres opcions a triar:

Totes tres opcions són explicades a les seccions següents.

Template:Note(ca)

Executants aplicacions KDE 4

Emprant la shell normal amb sux

Per aquest mètode, es requereix l'eina sux (http://fgouget.free.fr/sux/sux-readme.shtml). sux està disponible a la majoria de distribucions. Sinó pots emprar el mètode de sota shell normal sense sux. sux et permet canviar a un altre usuari amb una gestió implicita dels detalls de forward de les X (exportació d'authentificació i DISPLAY) d'una manera neta i simple.

Per a loguejar, escriu sux - kde-devel

Totes les variables d'entorn i tota la resta hauria d'establir-se correctament al teu .bashrc. Per a iniciar una aplicació, senzillament escriu el seu nom; per exemple kwrite Template:Note(ca)

Emprant la shell normal sense sux

El mètode més simple per a executar apliacions KDE 4 és emprar su per a loguejar com a l'usuari kde-devel i llavors senzillament iniciar qualsevol aplicació KDE 4 des de la línia de ocmandes. Per a loguejar-te, escriu su - kde-devel i llavors, després d'entrar la teva clau d'accés export DISPLAY=:0 Template:Note(ca) Totes les variables d'entorn i tota la resta hauria de ser establert correctament per el teu .bashrc. Per iniciar una aplicació, senzillament escriu el seu nom; per exemple kwrite Template:Note(ca) Template:Note(ca)

Emprant SSH

La manera més simple d'executar una aplicació KDE 4 amb SSH en el teu entorn d'escriptor actual és obtindre una consola de shell conscient de les X com a l'usuari kde-devel d'aquesta manera: ssh -X kde-devel@localhost Ara pots executar aplicacions KDE com sempre, per exemple: kwrite Les dues línies poden ser combinades convenientment: ssh -X kde-devel@localhost kwrite

Template:Note(ca)

Identificació sense clau d'accés

Abans que es pugui fer res seriòs amb aquest mètode, es necessita configurar un loguin sense clau d'accés. Per començar, executa la següent comanda com a l'usuari regular de l'escriptori: ssh-keygen -t rsa Prem enter tres vegades i accpeta la ruta de ~/.ssh/id_rsa i una clau d'accés buida. Ara, copia la línia a ~/.ssh/id_rsa.pub que ha sortit deprés d'executar aquesta comanda: cat ~/.ssh/id_rsa.pub Després de copiar aquesta línia, ssh de nou a l'usuari kde-devel i posa la línia copiada al fitxer $HOME/.ssh/authorized_keys:

ssh -X kde-devel@localhost $HOME/kde/bin/kwrite \
 $HOME/.ssh/authorized_keys

Copia la línia, guarda el fitxer, i tanca KWrite. Ara prova d'executar KWrite de nou amb la mateixa comanda SSH; ja no hauries d'haver d'entrar cap clau d'accés: ssh -X kde-devel@localhost $HOME/kde/bin/kwrite

Template:Warning(ca)

El fitxer d'escriptori SSH

Si vols poder llençar aplicacions més fàcilment que executar-les amb una comanda SSH des de la consola, una manera de fe-rho és crear arxius .desktop que fan ssh a l'atre compta. Template:Note(ca)

Pots començar amb un fitxer .desktop existent com a plantilla (com la del teu escriptori) o pots fer-ne un de nou des de zero. La idea principal és prefixar la comanda executada amb aquesta cadena: ssh -X kde-devel@localhost $HOME/kde/bin/

Un fitxer .desktop senzill que executa KWrite contindria el següent:

[Desktop Entry] Categories=Qt;KDE;TextEditor; Comment= DocPath=kwrite/index.html Encoding=UTF-8 Exec=ssh -X kde-devel@localhost /home/kde-devel/kde/bin/kwrite %U GenericName=Text Editor Icon=kwrite InitialPreference=8 MimeType=text/plain Name=KWrite (kde-devel) Path= StartupNotify=false Terminal=false TerminalOptions= Type=Application X-DBUS-StartupType=Multi X-DCOP-ServiceType=non X-KDE-StartupNotify=true X-KDE-SubstituteUID=false X-KDE-Username=

Template:Tip(ca)

Template:Note(ca)

Arrencant sessions KDE 4

Sessions KDE 4 anidades

Anidada

En comptes d'emprar una nova X virtual completa per a desenvolupar sofware pots anidar la teva sessió KDE 4 en el teu entorn KDE 3 o qualsevol altre entorn X11.

Pots també fer això amb xnest, però com que xnest no pot fer anar extensions com ara Render molta gent prefereix Xephyr.

Si vols una sessió KDE mínim engegada i funcionant, només llença Xephyr (disponible a Kubuntu com a xserver-xephyr; Els usuaris de Gentoo compilen x11-base/xorg-server amb USE="kdrive"):

Xephyr :1 -extension GLX &

Ara pots arrencar KDE:

export DISPLAY=:1
/path/to/kde4/bin/startkde-modified &

startkde-modified és una còpia de startkde-script que inclou les següents línies al cap d'amunt:

export KDEDIR=`kde4-config --prefix` export LD_LIBRARY_PATH=$KDEDIR/lib export PATH=$KDEDIR/bin/:$PATH export KDEHOME=~/.kde4

Pots també emprar Xephyr amb KDM mitjançant el protocol Xdmcp i senzillament una nova sessió a KDM.

A Kubuntu, pots activar-ho canviant

[Xdmcp]

  1. Whether KDM should listen to incoming XDMCP requests.
  2. Default is true

Enable=false

in /etc/kde3/kdm/kdmrc to

[Xdmcp]

  1. Whether KDM should listen to incoming XDMCP requests.
  2. Default is true

Enable=true

I ajustar el teu /etc/kde3/kdm/Xaccess per a permetre a la teva màquina local accedir. Addicionalment hauries d'assegurar-te de configurar una política de bloqueix de ports a totes les interfícies externes per al port Xdmcp si estàs fent aio en un portàtil o en un PC en un entorn no confiable.

Si ja estàs, senzillament executa Xephyr:

Xephyr -query localhost :1 -host-cursor -screen 1024x768&

On -host-cursor prova de reutilitzar el cursor del host i -screen determina les dimensions de la pantalla.

Template:Note(ca)


Template:Improve(ca) Sping 00:25, 9 April 2007 (CEST)
Jo utilitzo això per al meu script d'inici nested_kde4.sh:

#! /bin/bash
NESTED_KDE_DISPLAY_BACKUP=$DISPLAY
export DISPLAY=:0
Xephyr :1 -screen 1024x768 &
export DISPLAY=:1
$HOME/kde/bin/startkde-modified &
export DISPLAY=${NESTED_KDE_DISPLAY_BACKUP}

Si et trobes amb

"Call to lnusertemp failed (temporary directories full?).
 Check your installation."

prova això:

mkdir /var/tmp/kde-devel-kde4

El codi de sobre assumeix que treballes amb l'usuari kde-devel. Template:Note(ca)


Sessió KDE 4 en solitari

Solitari

Per a executar un entorn d'escriptori KDE 4 complet, pots iniciar-lo des de la consola com ho faries normalment, amb una cosa com aquesta:

X :1 & export DISPLAY=:1
startkde

Template:Note(ca)

o pots afegir-ho al teu gestor de sessió. Si estàs emprant KDM (o un gestor de sessió compatible) això es fa creant un fitxer .desktop tant a `kde-config --prefix`/share/apps/kdm/sessions/ o a /usr/share/xsessions/. El més fàcil de fer és copiar un fitxer kde.desktop existent i renombrar-lo a kde4.desktop. Obre aquest nou fitxer .desktop en un editor de text i canvia les entrades Exec, TryExec i Name per a que siguin de la següent manera:

Exec=$HOME/kde/bin/startkde TryExec=$HOME/kde/bin/startkde Name=KDE4

Substitueix $HOME/kde a l'exemple de sobre amb el prefixe d'on estàs instal·lant KDE4.

Després de reiniciar el gestor de sessió (Alt+e a KDM) aquesta nova entrada hauria d'apareixer al menú de sessions.

Pots haver d'editar els teus scripts startkde, pe: canivar això kdehome=$HOME/.kde a això kdehome=$HOME/.kde4 o enganxar això export KDEDIR=`kde4-config --prefix` export LD_LIBRARY_PATH=$KDEDIR/lib export PATH=$KDEDIR/bin/:$PATH export KDEHOME=~/.kde4 al cap d'amunt.

Template:Note(ca)

Tasques de desenvolupament

KDevelop

Aquesta secció t'explicacarà com emprar KDevelop 3.4 per a desenvolupar aplicacions KDE 4. Si tens cap dubte, correccions o queixes sobre aquesta secció, si us plau posa-les a la plana de discusió.

Prerequisits

Necessites al menys KDevelop 3.4 per fer això, el qual encara és una aplicació KDE 3. Versions inferiors a la 3.4 no tindràn suport per a Qt 4 entre d'altres coses. La versió de KDE 4 de KDevelop encara no està llesta per al desenvolupament seriòs. Pots obtindre KDevelop de la plana de KDevelop. Assegura't d'instal·lar KDevelop com tota la resta d'aplicacions KDE 3, no com amb el teu usuari kde-devel.

També necessites la darrera versió de GDB , que actualment és la 6.6.0. Template:Note(ca)

Necessitaràs tenir la documentació de l'API de kdelibs localment, que es descriu a instruccions de compliació.

També necessites ctags, htdig, htmerge i htsearch. valgrind i callgrind també poden ser útils.

Assegura't que has seguit els passos de les instructions de compilació de KDE 4 i tens un entorn de treball KDE 4 funcional. Assegura't que aplicacions senzilles de KDE 4 com ara Konsole o KWrite poden ser iniciades des de la linia de ocmandes per l'usuari kde-devel sense problemes.

Els següents passos es fan tots amb l'usuari kde-devel. Necessites loguejar-te com aquest usuari escrivint

su - kde-devel

Configurant l'entorn

KDevelop no té suport natiu per als projectes CMake. Afortunadament, CMake té l'abilitat de generar fitxers de projecte KDevelop ell mateix. Per tal de fer aio, necessites passar el paràmetre -GKDevelop3 a la comanda cmake. Això li diu a CMake que generi els fitxers de projecte per a KDevelop juntament amb els makefiles normals. La millor manera de fer això és modificar la teva cmakekde al teu fitxer .bashrc. Només canvia cmake $srcFolder -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull&& \ make && \ make install; per cmake $srcFolder -GKDevelop3 -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull&& \ make && \ make install;

Després de que hagis fer això, relogueja per a que els canvis al fitxer .bashrc tinguin efecte. Quan necessitis reexecutar la comanda cmakekde al directori de compilació (arrel) del projecte amb que vulguis treballar amb KDevelop (si no has fet servir -GKDevelop3 al pas de compliació). Per exemple, si vols treballar a Konsola, que vui a kdebase, necessites executar cmakekde al directori $KDE_BUILD/KDE/kdebase. Això desafortunadament recompila completament tot, però només quan canvies el generador.

Com que totes les variables d'entorn de l'usuari kde-devel són específiques per a KDE 4, es necessita posar-les de manera que concordin amb el teu entorn KDE 3 abans d'iniciar KDevelop. Una manera senzilla de fer aio és afegir la següent funció al teu .bashrc:

function start3app {

 mkdir -p /tmp/$USER-kde
 export PATH=/opt/kde3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games 
 export LD_LIBRARY_PATH= 
 export KDETMP=/tmp/$USER-kde 
 export KDEVARTMP=/var/tmp/$USER-kde 
 export KDEHOME=$HOME/.kde 
 export KDEDIR=/usr 
 export KDEDIRS=$KDEDIR 
 export DISPLAY=:0 
 eval "$@"
 source $HOME/.bashrc   #Reset environment variables again

}

Les variables PATH i LD_LIBRARY_PATH són agafades de l'usuari de KDE 3, i poden ser diferents al teu sistema. Escriu echo $PATH i echo $LD_LIBRARY_PATH com a usuari normal de KDE 3 per a obtindre aquests valors. La funció de sobre assumeix que KDE 3 és instal·lat al prefix /usr, com és el cas en els sistemes basats en Debian. Si el teu KDE 3 està instal·lat en un prefix diferent, necessites canviar la línia KDEDIR d'acord amb això. Aquí hi ha un exemple de com trobes el prefix de la teva isntal·lació de KDE; en aquest exemple és /opt/kde3:

kde-config --prefix /opt/kde3

Ara hauries de ser capaç d'iniciar KDevelop escrivint start3app kdevelop. Fes-ho ara.

Template:Tip(ca)


Problemes

Simptoma: kdevelop diu "cannot talk to klauncher". No pots obrir un fitxer.

Solució: afegeix la ruta de la teva llibreria KDE a LD_LIBRARY_PATH, p.e.:

export LD_LIBRARY_PATH=/opt/kde3/lib

Configurant KDevelop

Ara que KDevelop s'ha iniciat, necessites ajustar unes poques opcions. Ves a Settings->Configure KDevelop...->Documentation per a fer-ho. Esborra totes les entrades que no siguin rellevants per a la programació KDE 4.

Template:Note(ca)

Opcionalment, pots afegir la documentació de l'API kdelibs. Has de crear-la abans. Llavors afegeix la documentació prement Add.... En aquest diàleg, empra els següents paràmetres:

  • Type: Doxygen Documentation Collection (necessita posar-se primer)
  • Location: $KDE_SRC/KDE/kdelibs/kdelibs-apidocs/index.html

Ara afegeix la documentació de l'API Qt, que també ha de ser creada abans, emprant els següents paràmetres:

  • Type: Qt Documentation Collection (necessita posar-se primer)
  • Location: $HOME/qt-copy/doc/html/qt.dcf

Després de que hagis afegit kdelibs i la documentació de l'API de Qt, assegurat que tots els quadres de confirmació (TOC,Index and Search) estiguin marcats. Llavors, vers a la pestanya Full Text Search i assegura't que les rutes als executables htdig, htmerge i htsearch siguin correctes. Pots tancar llavors el diàleg de configuració.

Ara és hora d'obrir el projecte en el que vols treballar clicant a Project->Open Project.... Els fitxers del projecte es troben al directori de compliació. Per exemple, si vols treballar en Konsole,necessites obrir $KDE_BUILD/KDE/kdebase/apps/konsole/konsole.kdevelop. Ara necessites ajustar unes poques opcions especifiques del projecte a Project->Project Options. Necessites fer això cada vegada que comencis a treballar en un projecte diferent.

Template:Note(ca)

  • C++ Support->Code Completion
Here you need to add code completion databases for Qt and kdelibs, and more if you like, for example you might need a database for kdepimlibs when working on kdepim.
For kdelibs, click the Add... button and choose KDevelop Custom Directory PCS Importer, then add your KDE include directory ($HOME/kde/include) to the list and proceed. You can use the file selection dialog and the Add button to add it.
Now, add the database for Qt 4 by selecting KDevelop Qt4 PCS Importer this time. You need to select the Qt 4 include directory, which is $HOME/qt-copy/include.
noframe
 
Note
The Qt4 PCS Importer is only needed if you didn't install Qt4, i.e. you use it directly from the build directory. The drawback of using the Qt4 importer is that it doesn't show progress and the application seems to hang while it imports. The alternative is to use the Custom Directory PCS Importer for this too
  • C++ Support->Qt Options
Check Enable Qt options and choose Qt4 as your version. Set the QMake Binary path to $HOME/qt-copy/bin/qmake. Then choose Qt 4 style as Qt include syntax. Use $HOME/qt-copy/bin/designer as Designer Binary. Make sure to use the Change Plugin Paths dialog to add the plugin directory from KDE so you see the KDE widgets when designer is started. To do this add $HOME/kde/lib/kde4/plugins to the lineedit and then click the Add button.
  • Run Options
Make sure you use the correct binary as Executable. For example, if you want to run Konsole, this is $KDE_BUILD/KDE/kdebase/apps/konsole/src/konsole. You should add --nofork to the Debug Arguments or debugging some applications like KMail will not work at all.
Because the start3app functions changes some environment variables, you need to change them back here so the KDE 4 applications can be run without problems from within KDevelop.
For some applications, like Konsole, this is not strictly necessary, but others like KMail will crash if you do not change this.
Simply click the Add / Copy button to add new environment variables. You will need the following, which are the same as in your .bashrc:
Name Value
KDEHOME $HOME/.kde4
PATH $KDEDIR/bin:$QTDIR/bin:/usr/local/bin:$PATH
LD_LIBRARY_PATH $KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
KDETMP /tmp/$USER-kde4
KDEVARTMP /var/tmp/$USER-kde4
KDEDIR $HOME/kde
KDEDIRS $KDEDIR
LD_BIND_NOW 42


  • Build Options->Build
Make sure the correct build directory is selected. Again, for Konsole, this would be $KDE_BUILD/KDE/kdebase/apps/konsole.
  • Build Options->Make
You might want to check Abort on first error. You also might want to add VERBOSE= or VERBOSE=1 to Additional make options to control the level of verbosity for the build process.
If you have more than one processor or if you have access to an icecream cluster, you might want to check the Run multiple jobs option and set the Number of simultaneous jobs to the number of available processors. This increases the compile speed. It is the same as the -j option for make.
  • Formatting
You should set all options here to match the coding style of the project you are working on.
  • CTags->General
You need to correctly set the Path to ctags binary, which is /usr/bin/ctags on Debian-based systems.
You probably want to enable the When more than one hit, go directly to the first option.

Now you have finished adjusting your project-specific settings. Now you should remove some plugins you do not need, in Settings->Configure Plugins.... I for example disable the following plugins:

Abbreviation Expansion, Code Snippets, Doxygen Support, Embedded Konsole, File Tree, Final Packaging Support, "Open with" Menu Addon, QuickOpen, Regular Expression Tester, Scripting, Security Checker, Shell Filtering and Insertion, Text Structure and Tools Menu Addition.

You should at least disable the bold ones.

Now, open any source file if none is open already. This will enable the Settings->Configure Editor... entry, where you need to set the tab options to match the tab style used by the project you are working on. The important settings are:

  • Appearance->Borders->Show line numbers: Should be checked.
  • Appearance->Borders->Show icon border: Should be checked.
  • Editing->Tabulators
  • Editing->Static Word Wrap->Show marker: Should be checked
  • Indentation->Automatic Indentation->Indentation mode: Should be C Style
  • Indentation in general

In the mainwindow, click the CTags tab on the bottom tabbar, then click the Regenerate button to create a CTags database for easier source code navigation.

Now you have completed all essential configuration, congratulations!

Using KDevelop

Refer to the KDevelop manual for general help using KDevelop. The following section will only deal with special cases for KDE 4.

Debugging

KDE apps have many symbols, which means that you need a lot of memory to get a decent loading times for debugging. To quote a GDB developer: "I would be reluctant to debug KDE on something with <1GB RAM." If the stepping function of the debugger is slow for you, try the following tips:

  • Hide local variables. The Locals part of the variable tab on the left causes a big slowdown when stepping if you have many local variables. Simple collapse the Locals part of the tree, the local variables are then not updated every step. You can still examine variables by using the Evaluate expression function.
  • Use the patch at http://bugs.kde.org/show_bug.cgi?id=143977. It prevents the update of the framestack widget at each step, speeding up stepping considerably. The patch introduces some minor glitches, which is why it is not yet commited.
noframe
 
Note
KDevelop does not yet support modifing the CMake build system. This means you can not use KDevelop to add or remove files from the project or to change any other aspect of your project's build process. You need to modify the CMake files by hand and then rerun cmakekde instead. Read the CMake tutorial to learn how to do this.
Ktip.png
 
Tip
When you work on libraries, you first need to install them before you can test or debug your changes.

Since this is cumbersome and time consuming, you should create symlinks (ln -s) pointing from the build directory to the installation directory for all affected libraries.

Often, even simple programs use libraries internally, for example the settings dialog of Konsole is really a library.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal