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 | Começando |
| Previous | Compilando o KDE 4 |
| What's Next | Outros tópicos de desenvolvimento |
| Further Reading | n/a |
| Esta página presume que você tenha compilado kdelibs, kdepimlibs, e kdebase de acordo com estas instruções |
|---|
| Nota |
Quando você começa o desenvolvimento para o KDE 4, geralmente há três opções disponíveis para você:
As três opções são descritas nas seções seguintes.
|
Se você obtiver erros ao executar qualquer aplicativo kde4, tais como: Qt: Session management error: Could not open network socket QMutex::lock: Deadlock detected in thread -1241241936 ou quando você executar startkde e ficar emperrado, leia este artigo para a solução. |
|---|
| Nota |
Para este método, é necessária a ferramenta sux (http://fgouget.free.fr/sux/sux-readme.shtml). sux está disponível na maioria das distribuições. De outro modo você pode contar com o método abaixo shell normal sem sux. sux permite que você mude para outro usuário com um gerenciamento implícito dos detalhes de encaminhamento de X (autenticação e exportação de DISPLAY) de uma forma clara e simples.
Para fazer o login, digite sux - kde-devel
Todas as variáveis de ambiente e todo o resto devem ser configurados corretamente pelo seu.bashrc. Para iniciar um aplicativo, basta digitar seu nome; por exemplo kwrite
|
Se você receber erros sobre mimetypes ausentes ou algo parecido, tente o seguinte:
|
|---|
| Nota |
O método mais simples para iniciar aplicativos do KDE 4 é usando su para logar como usuário kde-devel e, em seguida, iniciar qualquer aplicativo do KDE 4 a partir da linha de comando. Para fazer o login, digite
su - kde-devel
e, em seguida, depois de digitar sua senha
export DISPLAY=:0
| A exportação da variável DISPLAY é necessária para que os aplicativos do KDE 4 apareçam normalmente no seu KDE 3 desktop. |
|---|
| Nota |
Todas as variáveis de ambiente e todo o resto devem ser configurados corretamente pelo seu .bashrc. Para iniciar um aplicativo, basta digitar seu nome; por exemplo kwrite
|
Se você receber erros sobre mimetypes ausentes ou algo parecido, tente o seguinte:
|
|---|
| Nota |
A maneira mais simples de executar um aplicativo do KDE 4 com SSH em seu ambiente de trabalho é obter um shell capaz de perceber que roda dentro do X como um usuário kde-devel como este:
ssh -X kde-devel@localhost
Agora você pode executar aplicativos do KDE apps como de costume, por exemplo:
kwrite
As duas linhas podem ser convenientemente combinadas:
ssh -X kde-devel@localhost kwrite
Antes de fazer qualquer coisa importante usando este método, um login sem senha precisa ser configurado. Para começar, execute o seguinte comando como usuário normal do desktop:
ssh-keygen -t rsa
Aperte enter três vezes para aceitar o caminho de ~/.ssh/id_rsa e uma senha vazia. Agora, copie a única linha no ~/.ssh/id_rsa.pub que é exibida depois da execução deste comando:
cat ~/.ssh/id_rsa.pub
Depois que a linha for copiada, volte ao ssh no usuário kde-devel e coloque-a no arquivo $HOME/.ssh/authorized_keys:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite \
$HOME/.ssh/authorized_keys
Cole na linha, salve o arquivo, e saia do KWrite.
Em seguida certifique-se de que $HOME/.ssh/authorized_keys tem as permissões corretas:
ssh kde-devel@localhost chmod og-xrw ~kde-devel/.ssh/authorized_keys
Agora tente executar KWrite novamente com o mesmo comando SSH, você não deve mais ter que digitar uma senha:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite
Ao usar um login SSH sem senha existem certos riscos de segurança, então assegure a proteção de seu arquivo ~/.ssh/id_rsa restringindo o acesso a ele com
chmod og-xrw ~/.ssh/id_rsa(embora o arquivo deva ter essas permissões quando é criado) |
|---|
| Aviso |
Se você quiser iniciar os aplicativos de um modo mais fácil que executando-os com um comando SSH a partir da linha de comando, crie um arquivo .desktop para o ssh em outra conta.
| Isso só será útil se o seu ambiente de trabalho suportar arquivos .desktop, mas pelo menos o KDE e o GNOME suportam. |
|---|
| Nota |
Você pode começar com um arquivo .desktop existente como modelo (como um de seu desktop) ou você pode criar um novo. A ideia principal é prefixar o comando a ser executado com esta string:
ssh -X kde-devel@localhost $HOME/kde/bin/
Um simples arquivo .desktop que roda KWrite teria o seguinte conteúdo:
[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=
| Aplicativos iniciados usando o SSH como esse não provocam o correto lançamento de respostas, então você provavelmente vai querer desativar "feedback de lançamento" para o seu arquivo .desktop |
|---|
| Dica |
| Para criar um arquivo .desktop de um aplicativo do KDE 4 usando esse padrão, o pacote do aplicativo terá que ter sido instalado em ~/kde/bin usando o comando cmakekde |
|---|
| Nota |
Em vez de usar um novo X virtual já desenvolvido para o desenvolvimento de software você pode utilizar o Xephyr para incorporar sua sessão do KDE 4 em sua sessão de trabalho do KDE 3 ou outro ambiente X11.
Você também pode fazer isso com o xnest, mas como xnest não consegue lidar com extensões como Render muitas pessoas preferem Xephyr.
Se você quiser ter uma sessão mínima do KDE instalada e funcionando, apenas inicie Xephyr (disponível no Kubuntu como xserver-xephyr; Usuários do Gentoo compilem x11-base/xorg-server com USE="kdrive"):
Xephyr :1 -extension GLX &
Agora você já pode iniciar o KDE:
su - $USER
export DISPLAY=:1
/path/to/kde4/bin/startkde-modified &
startkde-modified é uma cópia de startkde-script que incluem as seguintes linhas no topo:
export KDEDIR=`kde4-config --prefix`
export LD_LIBRARY_PATH=$KDEDIR/lib
export PATH=$KDEDIR/bin/:$PATH
export KDEHOME=~/.kde4
Você também pode usar Xephyr com KDM através do protocolo Xdmcp e simplesmente uma nova sessão do KDE 4 para KDM.
No Kubuntu, você pode habilitá-lo alterando
[Xdmcp]
Enable=false
em /etc/kde3/kdm/kdmrc para
[Xdmcp]
Enable=true
e ajustar seu /etc/kde3/kdm/Xaccess para permitir seu acesso à máquina local. Além disso, você deve certificar-se de criar uma política de bloqueio de porta em todas as interfaces externas para a porta Xdmcp, se você está fazendo isto em um laptop ou um PC em um ambiente não confiável.
Se você estiver pronto, basta iniciar Xephyr:
Xephyr -query localhost :1 -host-cursor -screen 1024x768&
onde -host-cursor tenta reutilizar o cursor do host e -screen define as dimensões da tela.
Nota: Se você tiver muitos erros de conexão recusada, você pode usar a opção -ac do Xephyr. Por exemplo:
Xephyr -ac :1&
Uma outra opção para tentar caso receba muitos erros de conexão recusada é garantir o acesso do seu usuário kde-devel ao seu servidor X. Como root ou usando sudo:
xhost +local:kde-devel
Se você não tem Xephyr, você pode também usar Xnest:
Xnest -ac :1& export DISPLAY=:1
| Esta seção precisa de melhorias: Por favor, ajude-nos a
limpar seções confusas e consertar seções que contenham um todo |
Eu uso isso para meu script de inicialização 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}
Se você se deparar com
"Call to lnusertemp failed (temporary directories full?). Check your installation."
tente isto:
mkdir /var/tmp/kde-devel-kde4
O código acima assume que você trabalha com o usuário kde-devel.
Para executar uma sessão completa do ambiente de trabalho KDE 4, você pode começar a partir da linha de comando como normalmente faria, com algo parecido com isso:
X :1 & export DISPLAY=:1 startkde
| Se o servidor X recusar a conexão dizendo algo como: Xlib: connection to ":1.0" refused by server, tente X -ac :1 como alternativa. |
|---|
| Nota |
ou você pode adicioná-lo ao seu gerenciador de login. Se você estiver usando o KDM (ou um gerenciador de login compatível) isso é feito criando um arquivo .desktop em `kde-config --prefix`/share/apps/kdm/sessions/ ou em /usr/share/xsessions/. A melhor coisa a fazer é copiar um arquivo existente kde.desktop e nomeá-lo kde4.desktop. Abra esse novo arquivo .desktop em um editor de texto e mude o Exec, TryExec e Name entradas para algo parecido com isso:
Exec=$HOME/kde/bin/startkde
TryExec=$HOME/kde/bin/startkde
Name=KDE4
Substitua $HOME/kde no exemplo acima pelo prefixo no qual você está instalando o KDE4.
Depois de reiniciar o gerenciador de login (Alt+e in KDM) essa nova entrada aparecerá no menu de sessões.
Você pode ter que editar seus scripts startkde,ou seja, mudar
esse
kdehome=$HOME/.kde
para esse
kdehome=$HOME/.kde4
ou colar esse
export KDEDIR=`kde4-config --prefix`
export LD_LIBRARY_PATH=$KDEDIR/lib
export PATH=$KDEDIR/bin/:$PATH
export KDEHOME=~/.kde4
no topo.
| Você deve ter um caminho para o programa 'qdbus' (geralmente ele é $QTDIR/bin) em seu $PATH para logar com êxito. Se ele não estiver lá, você vai receber uma mensagem de erro "Não foi possível iniciar DBus. Verifique sua instalação." |
|---|
| Nota |
Esta seção irá explicar como usar o KDevelop 3.4 para desenvolver aplicativos do KDE 4. Se você tiver dúvidas, correções ou reclamações sobre esta seção, por favor poste-as na página de discussão.
Você precisa de pelo menos KDevelop 3.4 para isto, que ainda é um aplicativo do KDE 3. Versões inferiores a 3.4 não têm suporte ao Qt 4, entre outras coisas. A versão KDE 4 do KDevelop ainda não está pronta para o desenvolvimento sério. Você pode obter o KDevelop em KDevelop homepage. Certifique-se de instalar o KDevelop como todos os aplicativos do KDE 3, não com seu usuário kde-devel.
Você também precisa da versão mais recente do GDB, que atualmente é a 6.6.0. Note que a versão do GDB que é fornecida com o openSuse 10.3 está quebrada, ela constantemente quebra ao analisar as variáveis (que o KDevelop faz automaticamente). Use ao invés disso a versão do GDB deste repositório.
Você precisa ter a documentação da API kdelibs localmente, que está descrita em instruções de compilação.
Você também precisa de ctags, htdig, htmerge e htsearch. valgrind e callgrind também podem ser úteis.
Certifique-se de que você seguiu os passos das instruções de compilação do KDE 4 e tem um ambiente de trabalho KDE 4. Verifique se aplicativos simples do KDE 4 como Konsole ou KWrite podem ser iniciados pela linha de comando do usuário kde-devel sem problemas.
Os passos seguintes são todos feitos com usuário kde-devel. Você precisa logar como esse usuário digitando
su - kde-devel
KDevelop não tem suporte nativo para projetos CMake. Felizmente, o CMake tem a capacidade de gerar arquivos próprios de projeto do KDevelop. Se quiser fazer isso, você precisa passar a bandeira -GKDevelop3 para o comando cmake. Isto diz ao CMake para gerar arquivos de projeto para o KDevelop ao lado do makefiles normal. A melhor maneira de fazer isto é alterar a sua função cmakekde no seu .bashrc. Basta alterar
cmake $srcFolder -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull&& \
make && \
make install;
para
cmake $srcFolder -GKDevelop3 -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull&& \
make && \
make install;
Depois de ter feito isso, faça o login novamente para que as alterações no arquivo .bashrc tenham efeito. Então você precisa executar novamente o cmakekde no (root) diretório de compilação do projeto se você quer trabalhar com KDevelop (se você não usa -GKDevelop3 na etapa de compilação). Por exemplo, se você quiser trabalhar com o Konsole, que existe no kdebase, você precisa executar cmakekde no diretório $KDE_BUILD/KDE/kdebase. Este, infelizmente, reconstrói tudo completamente, mas apenas uma vez quando você alterar o gerador.
Como todas as variáveis de ambiente do usuário kde-devel são específicas do KDE 4, estas precisam ser retrocedidas para corresponder ao seu ambiente KDE 3 antes de iniciar o KDevelop. Uma maneira simples de fazer isso é adicionar a seguinte função para o seu .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
}
As variáveis PATH e LD_LIBRARY_PATH são tomadas do usuário do KDE 3, e elas podem ser diferentes em seu sistema. Digite echo $PATH e echo $LD_LIBRARY_PATH como usuário KDE 3 normal para obter esses valores. A função acima assume que o KDE 3 está instalado no prefixo /usr, como é o caso em sistemas baseados em Debian. Se o seu KDE 3 está instalado em um prefixo diferente,você precisa alterar a configuração da linha KDEDIR. Aqui está um exemplo de como descobrir o seu prefixo de instalação KDE; neste exemplo ele é /opt/kde3:
kde-config --prefix
/opt/kde3
Agora você deve ser capaz de iniciar o KDevelop digitando start3app kdevelop. Faça isso agora.
|
Você pode iniciar qualquer aplicativo do KDE 3 com a função start3app. Candidatos úteis incluem Kompare e kdesvn. No entanto, você não pode iniciar KDbg desta forma para depurar aplicativos do KDE 4, já que as variáveis de ambiente para depurar aplicativos estão erradas. |
|---|
| Dica |
Sintoma: kdevelop diz "cannot talk to klauncher". Você não pode abrir um arquivo.
Solução: adicione seu caminho da biblioteca do KDE library a LD_LIBRARY_PATH, por exemplo:
export LD_LIBRARY_PATH=/opt/kde3/lib
Agora que o KDevelop foi iniciado, você precisa ajustar algumas configurações. Vá até Settings->Configure KDevelop...->Documentationpara fazer isso.Remova todas as entradas que não são relevantes para a codificação no KDE 4.
| Embora as variáveis de ambiente como $ HOME sejam usados nesta seção, você deve substituí-las por caminhos reais, porque o KDevelop não resolve variáveis de ambiente. |
|---|
| Nota |
Opcionalmente, você pode adicionar a documentação da API kdelibs. Você deve criá-la previamente. Então adicione a documentação clicando em Add.... Neste diálogo, use as seguintes configurações:
Agora adicione a documentação da API Qt, que também deve ser criada previamente , usando as seguintes configurações:
Depois de ter adicionado a documentação da API kdelibs e Qt, certifique-se de que todas as caixas (TOC,Index and Search) estão habilitadas. Então, vá para a aba Full Text Search e certifique-se de que os caminhos para os executáveishtdig, htmerge e htsearch estão corretos. Você pode então fechar a janela de configuração.
Agora é hora de abrir o projeto que você quer trabalhar clicando em Project->Open Project.... Os arquivos do projeto estão localizados no diretório de compilação. Por exemplo, se você quer trabalhar com o Konsole,você precisa abrir $KDE_BUILD/KDE/kdebase/apps/konsole/konsole.kdevelop. Você agora precisa ajustar algumas configurações específicas do projeto em Project->Project Options. Você precisa fazer isso toda vez que começa a trabalhar em um projeto diferente.
|
Às vezes, um arquivo de projeto KDevelop não está presente na pasta que você deseja trabalhar. Isto pode ter vários motivos, depende de como os arquivos CMake são escritos. Normalmente, arquivos do CMake que tenham uma declaração project(projectname) funcionam bem. Se você estiver bastante familiarizado com o CMake, você pode tentar adicionar essa declaração. Uma solução para isso é simplesmente usar o arquivo de projeto KDevelop da pasta pai, ou até mais. Nesse caso, você precisa usar a entrada Make Active Directory no menu de contexto da aba lateral File Selector. Com isso, você pode ignorar as outras pastas indesejadas quando for compilar e instalar. |
|---|
| Nota |
| 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 |
| 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 |
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:
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!
Refer to the KDevelop manual for general help using KDevelop. The following section will only deal with special cases for KDE 4.
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:
| 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. |
| 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. |
This describes how to use Eclipse to develop KDE 4 applications. It has been tested with Eclipse Ganymed and SUSE Linux 11.1 but should work same or similar with every combination. As an example KDE application we use ktimetracker from the kdepim module, other applications short work analog.
Using this description you will be able to
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepim
If you want to integrate the cmake build step into your build toolchain, you will need to
cat >/bin/eclipsebuild<<EOF cmake . && make -j4 && make install EOF chmod 777 /bin/eclipsebuild
To revert what eclipse did to your project simply run
rm -rf .externalToolBuilders/ .project .cproject
When using eclipse's svn plugin and building a KDE program, you will get error messages complaining that your svn binary is too old. If you want to try and change this, here's how you get to that error:
This describes how to use QtCreator to develop KDE 4 applications. It has been tested with QtCreator 1.2.80 and SUSE Linux 11.1 but should work same or similar with every combination. As an example KDE application we use ktimetracker from the kdepim module, other applications should work same or similar.
As discussed here we use ktimetracker as example project.
File -> Open -> kdepim/CMakeLists.txt.
Projects -> ktimetracker -> build settings -> Add a configuration ktimetracker.
As build directory choose kdepim. As arguments for cmake use e.g.
. -DCMAKE_INSTALL_PREFIX=/usr/local -DLIB_SUFFIX=64 -DCMAKE_BUILD_TYPE=debugfull
To start a new project you need to tell qtcreator to use the KDE libraries when building. So, choose File -> New... and create your project. We will call it yourproject here. To be able to use KDE's libraries, go to your home directory, cd into yourproject and modify yourproject.pro. Add a line
LIBS += -lkdeui