# Manual do Utilizador do &kdevelop;

## O Que Este Manual Contém

Este manual de utilizador pretende descrever o conteúdo e a utilização do Ambiente de Desenvolvimento Integrado (IDE) &kdevelop; &kdevrelease; do ponto de vista de um utilizador. Não é nenhum manual de programação nem descreve o processo de desenvolvimento em detalhe. O seu único objectivo é guiá-lo na interacção com o IDE.

Aqui, você irá encontrar informações sobre os seguintes tópicos:

- Num minuto — uma referência rápida aos comandos e acções mais usados. Também é um guia breve para resolver os problemas comuns ao trabalhar com o &kdevelop;.

- Desenvolvimento em UNIX — uma introdução histórico à programação em UNIX, as ferramentas principais necessárias e porque é que você precisa de um IDE.

- Instalar o &kdevelop; — diz-lhe como obter o &kdevelop; e como o pôr a funcionar.

- Introdução ao &kdevelop; — uma Visita Guiada — dá-lhe uma introdução rápida ao uso deste IDE, introduzindo os passos básicos para trabalhar num projecto.

- Introdução das Funcionalidades do &kdevelop; — extende a visita guiada do capítulo anterior, dando uma introdução geral ao que está incorporado no &kdevelop; e põe-o a par com a aparência e comportamento deste IDE.

- Introdução aos Menus e Barras de Ferramentas — (no apêndice) dá-lhe uma breve introdução às selecções do menu e da barra de ferramentas que estão disponíveis.

- As Teclas de Atalho — (no apêndice) lista as sequências de telcas que poderá usar para aceder rapidamente às operações específicas do &kdevelop;.

- Configurar o &kdevelop; — mostra-lhe como poderá adequar o IDE às suas necessidades.

- 'Scripting' com o &kdevelop; — descreve como pode adicionar 'scripts' para automatizar o &kdevelop;.

- Gestão Avançada de Projectos — mostra como carregar os projectos existentes, converter os projectos das versões mais antigas do &kdevelop; e importar os outros projectos existentes. Para além disso, a configuração das opções do projecto de acordo com as suas necessidades também é coberta.

- Ferramentas de edição — tudo o que precisa para criar os seus ficheiros de código: usar o editor, procurar por texto a nível local ou do projecto, até à integração de novos ficheiros e classes no projecto.

- Os navegadores de ficheiros — demonstra várias ferramentas para olhar para a estrutura do seu projecto e para aceder aos ficheiros com que deseja trabalhar.

- Os Navegadores de Classes — descreve uma das ferramentas mais poderosas do &kdevelop;, que lhe permite navegar pelas dependências de classes e lhe permite criar e aceder facilmente às classes e métodos que necessita.

- Documentação — mostra como aceder à documentação rica que é apresentada pelo &kdevelop; e diz-lhe como criar a documentação do seu projecto, a documentação concisa e poderosa da API, dando-lhe uma ideia geral sobre todo o código do seu projecto, assim como a documentação do utilizador baseada em DocBook.

- Gestão de Compilações e de Projectos — lida com a criação e a gesta do seu projecto, descrevendo as bases do 'autoconf' e do 'automake', assim como a forma para personalizar os ficheiros do 'make' e como usar as opções do mesmo para ajustar a sua aplicação às suas necessidades.

- Gestão Avançada de Compilações — vê as formas de manter várias configurações de compilações, de modo a fazer compilação cruzada para várias plataformas, ou para criar um sistema embebido, usando a biblioteca Qt/embedded.

- A interface do depurador — ddescreve como usar a interface integrada do depurador gdb, de modo a que você possa descobrir e eliminar os erros sem sair do &kdevelop;.

- Usar o CVS — diz-lhe como poderá manter o seu projecto no sistema de controlo de versões CVS, uma obrigatoriedade, principalmente se muitos utilizadores trabalham no mesmo projecto.

- Englobar Programas Externos — mostra como aceder aos programas externos e às ferramentas dentro do &kdevelop;, enriquecendo desta forma as suas capacidades.

- Ferramentas em 'Plugins' — dá-lhe uma introdução aos componentes que compõem o &kdevelop; e como os poderá usar de acordo com as suas necessidades, carregando apenas os componentes necessários, tanto a nível do projecto como a nível do IDE.

- Alguma informação usada de forma como foi colocada no apêndice. Entre outras coisas, este consiste em:

  - Introdução aos Menus e Barras de Ferramentas — dá-lhe uma breve introdução às selecções do menu e da barra de ferramentas que estão disponíveis.

  - As Teclas de Atalho — lista as sequências de telcas que poderá usar para aceder rapidamente às operações específicas do &kdevelop;.

  - Ficheiros de Configuração Usados pelo &kdevelop; — indica os ficheiros que o &kdevelop; usa para gravar a sua informação interna. Isto é particularmente útil, no caso de ocorrer algo de mal com a sua configuração.

  - Ferramentas de 'Plugins' — mostra-lhe os módulos que poderá usar para adequar o &kdevelop; às suas necessidades.

## Num Minuto — Dicas e Truques

A informação neste capítulo pretende ser uma referência rápida para um arranque rápido ou se você (momentaneamente) se esqueceu de algum conceito básico. Existem também algumas sugestões breves sobre como resolver alguns problemas comuns ao trabalhar no &kdevelop;.

Se você quiser mais informações sobre um dado tópico, basta seguir a referência no título que inicia esse conselho.

Estão disponíveis informações sobre os seguintes tópicos:

- Aparência e Comportamento
- Projectos
- Compilação
- &automanag;
- Problemas de Compilação/Make
- Outros Tópicos

## Aparência e Comportamento

- ## Forçar as Páginas de Ferramentas a Ficarem Menores no Modo IDEAl

  Por omissão, o &kdevelop; começa com páginas grandes baseadas em texto por toda a área de trabalho. Você poderá mudar esta aparência para poupar espaço na janela de configuração do &kdevelop; (Configuração Configurar o KDevelop... Interface do Utilizador).

  Se você usar uma versão mais antiga do &kdevelop; 3, esta janela de configuração poderá não estar disponível. Para mudar a apresentação das páginas de ferramentas, coloque uma opção `MDIStyle` na secção `[UI]` do seu ficheiro de configuração `$KDEHOME/share/config/kdeveloprc`, como se segue:

  - `MDIStyle=0`: apenas os ícones
  - `MDIStyle=1`: apenas o texto (por omissão)
  - `MDIStyle=3`: ícones e texto

- ## Caracteres com Cores e/ou Estilo de Apresentação Estranhos

  Se você ver as letras coloridas aleatoriamente por todo o lado (&ie; nas páginas, barras de ferramentas, etc.) e a janela do &kdevelop; a usar um estilo de visualização estranho, isto poderá ajudar:

  - No seu ficheiro de configuração `$KDEHOME/share/config/kdeveloprc`, procure a linha que contém `Style=Checked` e remova-a. Depois reinicie o &kdevelop;.

  (Este comportamento ocorre algumas vezes quando você carrega num ficheiro UI num dos navegadores de ficheiros e o &kdevelop; carregou o KUIViewer para mostrar a &GUI; que foi produzida com este ficheiro).

- ## Modo de Ecrã Completo

  Seleccione Ver Modo de Ecrã Completo no menu ou carregue em Ctrl Shift F .

- ## Esconder/Mostrar o Menu

  Para esconder o menu seleccione Configuração Mostrar o Menu nas opções de menu ou carregue em Ctrl M . Você poderá também incluir um Mostrar o Menu numa barra de ferramentas adequada, p.ex., na Barra de Navegação para esse fim. Para voltar a mostrar o menu você precisa de carregar em Ctrl M ou de usar o ícone Mostrar o Menu, se estiver disponível.

## Projectos

- ## Criar um Novo Projecto

  O Projecto Novo Projecto... irá iniciar o &appwizard;.

- ## Criar um Projecto Personalizado

  Não existe forma directa de criar um projecto personalizado (&ie; um projecto que usa as suas próprias Makefiles). Use o Projecto Importar um Projecto Existente em alternativa. Lembre-se de definir o Tipo de Projecto adequado, identificado com um (Makefiles personalizadas), na janela.

- ## Utilize Opções do Projecto Cedo

  Sempre que você inicia um projecto, não se esqueça de definir as Projecto Opções do Projecto... de acordo com a sua vontade.

## Compilação

- ## Faltam detalhes nas mensagens de compilação

  Se, durante as compilações, você reparar que alguma informação valiosa está em falta na janela de Mensagens de Resultado, poderá ter a ver com o nível de detalhe de mensagens demasiado baixo. Carregue com o &RMB; na janela e seleccione outro nível de detalhe no menu de contexto.

## &automanag;

- ## Criar Novos Ficheiros num Projecto

  Seleccione o subprojecto na parte superior do &automanag;, carregando depois com o &RMB; na parte inferior do título dos grupos a que deseja adicionar os ficheiros e seleccione Criar Novo Ficheiro....

- ## Adicionar Ficheiros Existentes ao Projecto

  Seleccione o subprojecto na parte superior do &automanag; e carregue então com o &RMB; na parte inferior do título dos grupos a que deseja adicionar os ficheiros e seleccione Adicionar os Ficheiros Existentes....

- ## Remover um Ficheiro do Projecto

  Seleccione o subprojecto na metade superior do &automanag;, abrindo então na parte inferior a lista de grupos de que deseja remover o ficheiro, carregando com o &RMB; no ficheiro desta lista e seleccionando Remover.

## Problemas de Compilação/Make

- ## O projecto não compila de novo, depois de mudar de/para o alvo por omissão

  Existe um problema com as funcionalidades do &automake;/&autoconf;. Se o Projecto Configuração de Compilação tenta seleccionar a partir de três directorias de compilação: default, optimized e debug, tente fixar-se apenas no 'default' ou apenas no 'debug'/'optimized'.

  - Logo que tenha configurado o seu projecto com o 'default', não conseguirá mais compilar com o 'debug' ou o 'optimized'.

  - Logo que tenha configurado o seu projecto com o 'debug' ou o 'optimized', não conseguirá mais compilar com o 'default'.

- ## Erro de Wrong `autoconf` version (Versão incorrecta do `autoconf`

  Existem várias mensagens de erro que dizem respeito às versões muito antigas do autoconf etc., que impedem o `configure` de funcionar convenientemente. Execute o `autoreconf` na árvore de directorias em que os ficheiros `configure.in` em questão se encontram. Este comando irá tentar actualizar a informação nos ficheiros do Sistema de Compilação da &GNU;. Veja o `man autoreconf` para mais informações.

## Outros Tópicos

- ## Ficheiros de Configuração Usados pelo &kdevelop;

  Normalmente não terá de se preocupar com estes, mas isto é bastante útil para saber, no caso de ocorrer algo de mal com a sua configuração.

&unixdev; &kdevelop-install; &getting-started; &kdevelop-survey; &setup; &kdevelop-scripting; &applicationwizard; &project-advanced;

## Ferramentas de Edição

### Pedaços de Código

### Funcionalidades (introdução preliminar)

- O SnippetPart adiciona uma janela de ferramentas acoplada por omissão à direita

- A adição, edição e remoção de pedaços de código está disponível com um menu de contexto

- Se fizer duplo-click sobre um pedaço de código, irá inseri-lo na janela activa, na posição actual do cursor

- As dicas de ferramentas mostram o conteúdo de um pedaço de código

- Os pedaços de código são armazenados na directoria pessoal do utilizador, por isso todos os utilizadores poderão ter os seus próprios pedaços de código

- Os pedaços de código poderão conter variáveis do estilo $NOME_VARIAVEL$. Ao usar o pedaço de código, são pedidos ao utilizador os valores de substituição para as variáveis

### Mapeamento do Teclado

A seguir, iremos listar as combinações de teclas por omissão do editor predefindo. Você poderá configurá-las como desejar.

Esquerda | Move-se um carácter para a esquerda
Direita | Move-se um carácter para a direita
Ctrl Esquerda | Move-se uma palavra à esquerda
Ctrl Direita | Move-se uma palavra à direita
Cima | Sobe uma linha
Baixo | Desce uma linha
PgUp | Sobe uma página
PgDn | Desce uma página
Ctrl PgUp | Move-se para o início do ficheiro
Ctrl PgDn | Move-se para o fim do ficheiro
Home | Move-se para o início da linha
End | Move-se para o fim da linha

Para todas as teclas acima, o Shift poderá ser carregado adicionalmente, para marcar da posição actual do cursor até à posição final.

Backspace | Apaga um carácter à esquerda
Delete | Apaga o carácter que está por baixo do cursor
Ctrl C | Copia o texto seleccionado para a área de transferência
Ctrl V | Cola o texto seleccionado a partir da área de transferência
Ctrl X | Apaga o texto seleccionado e coloca-o na área de transferência
Ctrl Z | Desfazer
Shift Ctrl Z | Refazer

### O Relatório de Problemas

(... ainda não escrito ...)

### Procura

#### Procurar por Texto

Ctrl F- Procurar Ctrl R- Substituir

#### ISearch

A pesquisa convencional com o Editar Procurar precisa que você indique o termo completo a procurar antes de começar. Na maioria das vezes, é muito mais rápido procurar incrementalmente. Se carregar no campo de edição chamado ISearch da barra de ferramentas. A pesquisa é feita à medida que você vai procurando. Você irá descobrir que muitas das vezes o termo desejado é encontrado logo ao fim de 3 ou 4 caracteres introduzidos.

#### Pesquisa

Ambos os mecanismos de procura descritos acima estão restritos a procurar dentro de apenas um ficheiro. Está disponível uma ferramenta adicional que lhe permite procura num conjunto (provavelmente grande) de ficheiros através do item Procurar nos Ficheiros... do menu Editar. É basicamente uma interface gráfica para o programa &grep;(1).

Na janela, você poderá indicar quais os ficheiros que são pesquisados. Existe um conjunto de padrões de caracteres especiais disponíveis numa lista. Desta forma, você poderá restringir com facilidade o mecanismo de procura nos ficheiros de inclusão. Para além disso, você poderá indicar uma directoria onde terá início a procura. Se você assinalar a opção Recursivo, a pesquisa vai iterando por todas as directorias cuja hierarquia fica abaixo desta.

O termo da procura é, de um modo geral, uma expressão regular que segue a sintaxe do POSIX. Por exemplo, você poderá usar o termo `"\<K.*"` se desejar procurar todas as palavras que comecem com a letra K. Os caracteres que se seguem são interpretados de uma forma especial:

`.` | Corresponde a um carácter qualquer
`^` | Corresponde ao início de uma linha
`$` | Corresponde ao fim de uma linha
`\<` | Corresponde ao início de uma palavra
`\>` | Corresponde ao fim de uma palavra
`?` | O item anterior aparece menos de uma vez
`*` | O item anterior aparece zero ou mais vezes
`+` | O item anterior aparece uma ou mais vezes
`{n}` | O item anterior aparece exactamente 'n' vezes
`{n,}` | O item anterior aparece 'n' ou mais vezes
`{,n}` | O item anterior aparece menos de 'n' vezes
`{n,m}` | O item anterior aparece pelo menos `n` vezes mas menos de `m` vezes

As referências anteriores às expressões entre parêntesis estão também disponíveis com a notação `\n`.

Para os programadores de C++, como bónus especial, existem alguns padrões de procura disponíveis para os padrões típicos. Estes permitem-lhe, por exemplo, procurar por todas as chamadas de funções-membro de um dado objecto.

Logo que inicie a procura ao carregar no botão Procurar, ela será efectuada por um processo assíncrono exterior. Todos os itens encontrados irão aparecer na janela Grep. Você poderá então saltar para os itens encontrados no sistema de ficheiros. Se você tiver modificado as versões deles no seu editor, você poderá ter algumas falhas de precisão no número de linha, ou poderá mesmo ter alguns itens inválidos — você poderá evitar isto se gravar os ficheiros todos de antemão.

### Completação de Código

(... ainda não escrito ...)

### Criar Novos Ficheiros e Classes

(... ainda não escrito ...)

#### Editar os Modelos

(... ainda não escrito ...)

## Os Navegadores de Ficheiros

Do lado esquerdo da janela principal, o &kdevelop; poderá mostrar os vários tipos de listas e árvores para a selecção dos ficheiros:

- ## Árvore de Ficheiros

  Esta mostra uma árvore da hierarquia de ficheiros sob a directoria do projecto. Se você carregar num ficheiro, este é aberto no editor. Para os ficheiros que não contenham texto, o KDevelop inicia uma aplicação que consiga lidar com o tipo MIME respectivo.

  A árvore de ficheiros é actualizada regularmente sempre que algo se altera no sistema de ficheiros. Por exemplo, se você criar novos ficheiros ou directorias (mesmo fora do &kdevelop;), isto é reflectido automaticamente na lista de ficheiros. No Linux, esta funcionalidade tira partido da biblioteca FAM. Nos outros sistemas operativos ou sobre o NFS, as directorias apresentadas são percorridas em intervalos pequenos.

  A árvore de ficheiros esconde os ficheiros que normalmente não são interessantes, como os ficheiros-objecto. Nas Opções do projecto em Grupos de ficheiros, você poderá configurar (como uma lista separada por vírgulas de caracteres especiais) quais os padrões que são usados para filtrar os ficheiros irrelevantes.

  Para além disso, poderá optar por restringir apenas aos ficheiros que pertençam ao projecto aberto de momento. Isto poderá ser activado ou desactivado se carregar com o &RMB; do item de base da árvore.

  ### Uma Imagem da Árvore de Ficheiros

- ## Grupos de Ficheiros

  Isto mostra os ficheiros que pertencem ao projecto, agrupados pela sua extensão dos nomes de ficheiros. Tal como na árvore de ficheiros, você poderá editar um se carregar nele com o &LMB;.

  Os grupos mostrados nesta janela poderão ser configurados na opção Grupos de ficheiros da janela Opções do projecto. Para poder personalizar a janela de acordo com as suas necessidades, é útil compreender como é que os ficheiros se distribuem nos grupos. Para cada ficheiro, o &kdevelop; percorre todos os grupos de cima para baixo. Em cada grupo, ele verifica se o nome do ficheiro corresponde a um dos padrões. Se existir uma ocorrência, o ficheiro é mostrado neste grupo e a iteração termina. Isto ajuda a perceber que os padrões mais genéricos deverão ser colocados por baixo dos mais específicos. Por exemplo, o asterisco para o grupo Outros deverá ser o último padrão.

## Os Navegadores de Classes

Ao trabalhar num projecto com uma linguagem orientada por objectos, a sua atenção ao trabalhar no projecto não é colocada nos ficheiros de código e nos seus nomes, mas sim nas classes e nas relações entre elas. Para o ajudar a navegar pelo espaço de classes e símbolos definidos, o &kdevelop; inclui vários navegadores de classes que visualizam a estrutura de classes de várias formas diferentes.

### Vista de Classe

Esta janela é vista do lado esquerdo da janela principal e contém uma lista linear de todas as classes, variáveis e funções do seu projecto. É desenhada em árvore. Se você abrir o nó de uma classe ao carregar nele, irá aparecer uma lista com todos os métodos e atributos da classe respectiva.

#### Uma Imagem da Janela de Classes

A janela de classes funciona de dois modos diferentes. Por omissão, todos os símbolos são agrupados em Classes, Estruturas, Funções, Variáveis e Namespaces. No menu de contexto da janela, você poderá optar por Listar por 'Namespaces'. Neste modo, a hierarquia de espaços de nomes ou 'namespaces' é apresenta e os símbolos são agrupados no espaço de nomes respectivo em que estão definidos. Isto poderá ser útil para os projectos que façam um uso intensivo de espaços de nomes (aninhados). É menos útil nos projectos que não tiram partido deles.

Você poderá também alterar a forma como sao apresentados os nomes das classes. Normalmente, os nomes das classes são mostrados sem o 'namespace' (espaço de nomes) em que estão definidos. Isto significa que você não poderá distinguir imediatamente as classes com o mesmo nome em 'namespaces' diferentes. Se você deixar algum tempo o cursor do rato em cima de um item, o nome completo é mostrado como uma dica. Você poderá optar por mostrar sempre o nome completo se escolher Nomes completos dos identificadores no menu de contexto.

Se carregar numa classe ou num método da mesma, aparece-lhe a sua definição. Você também poderá saltar para a declaração de um método se escolher Ir para a declaração no menu de contexto. No mesmo menu, para as classes, existem também os métodos Adicionar um método... e Adicionar um atributo.... Isto abre algumas janelas, onde você poderá gerar novas declarações de métodos e variáveis na classe respectiva, em conjunto com uma implementação vazia.

### Ferramentas de Classes

A janela da ferramenta de classes é activada se carregar com o botão direito do rato numa classe da janela de classes e se escolher a opção Ferramenta de classes....

### Hierarquia de Classes

(... ainda não escrito ...)

## Documentação

A documentação, infelizmente, pertence às questões de programação mais descuidadas. De qualquer forma, desde que esteja configurada correctamente e mantida actualizada, a documentação interna e externa oferece uma ajuda valiosíssima.

A documentação tem várias facetas. Existe

- a documentação interna do projecto, que consiste principalmente em

  - comentários nos ficheiros de código/inclusão

  - documentação interna da API do seu projecto, gerada a partir do ficheiro do programa com ferramentas especiais, como ⪚, o &doxygen;

- documentação externa do projecto, que contém, entre outras

  - a documentação externa da API de p.ex. as bibliotecas comuns do sistema (do KDE, do Qt, etc.)

  - qualquer outra documentação (manuais de programação de uma linguagem, informação geral do sistema, artigos HowTo, entre outros)

Toda esta documentação deverá ser mantida facilmente e pronta a usar sempre que necessitar. O &kdevelop; tem a possibilidade de o fazer.

### O Navegador da Documentação

#### Uma Imagem da Árvore de Documentação

&project-management;

## Gestão Avançada de Compilações

### Configurações Múltiplas de Construção

(... ainda não escrito ...)

### Compilação Cruzada

Se tiver compiladores cruzados ('cross-compilers') disponíveis, você poderá compilar os seus programas para processadores e sistemas operativos diferentes do sistema em que o &kdevelop; e o compilador estão a correr. A colecção de compiladores da &GNU; &gcc; pode ser configurada e compilada como um compilador cruzado se você o compilar você próprio. Consulte as páginas de 'info' do GCC para mais informações. Algumas distribuições do Linux também fornecem pacotes binários.

Um pacote baseado no 'automake' poderá ser compilado de forma cruzada facilmente se indicar a opção `--host` no programa 'configure' e se configurar as variáveis de ambiente `CC` e `CXX` para os executáveis dos compiladores cruzados. Você poderá querer mudar frequentemente entre uma compilação cruzada da sua aplicação e outra compilada para o seu sistema de desenvolvimento. Para isso, é uma vantagem usar a capacidade do &kdevelop; de gerar várias configurações de compilação, como é explicado em buildconfigurations. Logo que você tenha criado uma nova configuração de compilação para compilações cruzadas na janela Projecto Opções do Projecto..., adicione a opção

    --host=plataforma

às opções do 'configure'. O nome da `plataforma` é um tuplo no formato

    cpu-distribuicao-so

ou

    cpu-distribuicao-kernel-so

Para várias combinações, você poderá usar um formato mais curto, como por exemplo i386-linux ou arm-elf.

### Qt/Embedded

O &qte; é uma versão da biblioteca &Qt; que não usa o sistema de janelas do X, mas desenha directamente no 'framebuffer' dos sistemas Linux. É por isso interessante para os sistemas embebidos que tenham grandes restrições sobre a utilização da memória de todo o sistema. A sua API é completamente compatível com a da versão para X11.

Programar uma aplicação para o &qte; com o &kdevelop; não é muito diferente de programar com a versão para X11 do &Qt;. De facto, você poderá usar o mesmo código para ambas as versões. Se usar a gestão de projectos do Autoproject, você poderá mudar para a versão embebida se passar o argumento `--enable-embedded` ao programa 'configure'. Você poderá indicar isto na janela Projecto Opções do Projecto... em Opções do 'Configure'. Com a opção `--with-qt-dir=DIR`, você indica a directoria em que o &qte; está instalado.

Depois de configurar e compilar a sua aplicação com estas opções, ela irá compilar com a biblioteca `libqpe.so`. Esta versão da sua aplicação não irá correr normalmente quando você usar o X11. Para a poder testar, execute-a sob o controlo do programa qvfb (Qt Virtual Frame Buffer). Isto é feito, iniciando o qvfb e depois iniciando a sua aplicação com

    aplicacao -qws -display QVFb:0

Naturalmente, quando você tiver uma versão funcional da sua aplicação, você irá querer usá-la no processador de destino. Para isso, será provavelmente melhor criar várias configurações de compilação, tal como foi explicado acima, para que você possa mudar rapidamente entre a versão a correr no seu sistema de desenvolvimento e a versão que está a correr no sistema-alvo.

As aplicações para o &qte; normalmente correm como aplicações únicas no dispositivo para que foram desenhadas. A Trolltech também suporta o Qtopia, que é uma colecção de aplicações para PIM, navegação na Web e para outras áreas diversas e que trabalham em conjunto de forma consistente. É o ambiente padrão, por exemplo, do Sharp Zaurus. Você poderá criar aplicações que integram com este ambiente se usar o SDK do Qtopia. Isto implica que a classe da sua aplicação seja uma sub-classe de `QPEApplication` e compile com a biblioteca `libqpe.so`. Se você desenvolver a sua aplicação com a gestão de projectos do Autoproject, você terá de adicionar a opção `--enable-qtopia` às opções do 'configure'.

## A Interface de Depuração

Para o C e o C++, o &kdevelop; contém um depurador interno que está directamente integrado com o editor. Tecnicamente, está implementado como uma interface que usa o depurador portável da &GNU; gdb através de um 'pipe'. O depurador poderá ser iniciado de várias formas:

- Com o Depurar Iniciar, o programa principal do seu projecto é carregado no depurador.

- Se usar o Depurar Iniciar (outro) Examinar o ficheiro 'core' você irá carregar um ficheiro 'core', que é gerado pelo 'kernel' do sistema operativo quando o programa tiver estoirado (A geração dos ficheiros 'core' poderá estar desligada no seu sistema; veja em ulimit(1)). Isto é útil para uma análise 'post-mortem' de um programa.

- Com o Depurar Iniciar (outro) Anexar ao processo, você irá invocar o depurador sobre um programa já em execução. Ser-lhe-á mostrada uma lista dos processos, onde você poderá seleccionar o processo que o depurador deverá ocupar.

- Lembre-se que a depuração só é possível se o seu projecto tiver sido compilado com as informações de depuração activas. Elas poderão ser activadas na janela de Opções do compilador. Quando esta opção estiver activada, o compilador gera dados adicionais que permitem ao depurador associar os nomes dos ficheiros e os números de linhas aos endereços no executável.

A interface do depurador oferece várias vistas dentro do processo:

- ## Variáveis

  Esta janela lista os valores de todas as variáveis locais do ponto de execução actual do programa. Ele cobre as variáveis na pilha de chamadas completa, i.e., a função em que o processo foi interrompido, a função que chamou esta função, e assim por diante, até à função `main()`.

  Outro ramo das variáveis contém as variáveis de vigia. Poderá configurar você mesmo quais as variáveis que são mostradas aqui. Tanto poderão ser vigiadas as variáveis globais como as locais. Você poderá adicionar as variáveis, quer carregando no botão Adicionar quer carregando em RETURN, enquanto o item Vigia está seleccionado. Elas poderão ser removidas também através do menu de contexto.

- ## Pontos de Paragem

  (... ainda não escrito ...)

- ## Pilha de Chamadas

  (... ainda não escrito ...)

- ## Descodificação

  (... ainda não escrito ...)

### Colocar Pontos de Paragem

(... ainda não escrito ...)

### Opções

### Mostrar os Nomes Codificados

No C++, os nomes das funções no executável estão codificados, i.e, os nomes das funções incluem a informação sobre os tipos de argumentos. Isto é necessário para poder suportar as funções com vários tipos de argumentos. O algoritmo de codificação não está normalizado e difere mesmo entre versões diferentes do compilador de C++ da &GNU;.

Na janela de descodificação, são mostrados normalmente os nomes descodificados ou 'limpos', por isso as assinaturas das funções aparecem tal e qual aparecem no código-fonte, por isso são fáceis de ler. Em alternativa, você poderá optar por ver os nomes codificados.

### Tentar Definir Pontos de Paragem no Carregamento da Biblioteca

A infra-estrutura do depurador gdb não permite definir pontos de paragem em código que não esteja carregado de momento. Numa aplicação altamente modular, em que normalmente o código só é carregado a pedido como um 'plugin' (usando a função da 'libc' `dlopen(3)`), isto poderá ser bastante inconveniente. Como tal, o &kdevelop; implementa o seu suporte próprio para os pontos de paragem nas bibliotecas dinâmicas. Se você definir esta opção, ela permitir-lhe-á definir pontos de paragem nas bibliotecas que não estiverem carregadas. Aí, sempre que o gdb notificar que uma biblioteca está carregada, o &kdevelop; tentará atribuir os pontos de paragem pendentes.

### Activar a Barra de Ferramentas Flutuante

(... ainda não escrito ...)

## Usar o CVS

### Bases do &CVS;

O &CVS; é o sistema de controlo de versões que vários projectos de código-livre - incluindo o &kde; — usam de momento. Ele armazena todo o código num local central, chamado de repositório. A partir do repositório, os programadores poderão extrair (fazer um 'checkout') de uma versão actual do projecto ou de imagens do mesmo em alturas arbitrárias no tempo. Em contraste com outros sistemas de controlo de versões, não é necessário bloquear os ficheiros onde uma pessoa deseja trabalhar. Por isso, o trabalho pode ser altamente paralelizado.

Sempre que um programador terminou uma tarefa, ele irá enviar (fazer um 'commit') do seu código (acompanhado com uma mensagem de registo). O &CVS; tem a tarefa de reunir as alterações feitas pelos vários programadores. Poderá acontecer, obviamente, que os programadores trabalhem no mesmo pedaço de código, o que irá resultar num conjunto de alterações em conflito (na prática, isto acontece raramente, e é normalmente um sinal de falta de comunicação). Neste caso, o &CVS; irá rejeitar o envio, até que todos os conflitos sejam resolvidos para então poder enviar as alterações dos ficheiros.

Até agora, isto tem sido uma descrição das funcionalidades básicas do &CVS; com que uma pessoa terá de lidar. Mas o &CVS; pode fazer muito mais: Uma pessoa poderá manter várias ramificações de um projecto (p.ex., o &kde; 1.1.2 e o &kde; 2 eram ramificações da árvore de desenvolvimento do &kde;), reunir as alterações de uma ramificação noutra, pedir as diferenças entre versões, o histórico das versões de um ficheiro, &etc;.

O &CVS; está implementado como um sistema cliente/servidor. Como utilizador, toda a comunicação com o repositório vai através do programa da linha de comandos &cvs;. Está disponível uma interface de utilizador de nível mais alto através de aplicações como o Cervisia () ou o TkCVS (). No &kdevelop;, só uma pequena parte da funcionalidade do &cvs; que é importante para o seu dia-a-dia é que poderá ser usada directamente.

Assume-se um conhecimento básico da utilização do &CVS;. Em particular, você deverá saber como obter um projecto por completo do repositório. Recomenda-s eo livro Open Source Development With CVS de Karl Fogel, o qual está disponível publicamente (excepto os capítulos não-técnicos). Veja o .

### Comandos do &CVS; no &kdevelop;

Nas janelas dos ficheiros, estão disponíveis os seguintes itens do menu de contexto:

- ### Adicionar ao Repositório

  Prepara o ficheiro marcado para ser adicionado ao repositório. O ficheiro é transferido de facto para o repositório quand o enviar (fizer um 'commit') ou da directoria que o contém, da próxima vez.

- ### Remover do Repositório

  Prepara um ficheiro para ser removido do repositório. Isto também remove o ficheiro do sistema de ficheiros local, como tal use esta funcionalidade com cuidado!

- ### 'Update'

  Invoca o `cvs update` para reunir as alterações dos outros utilizadores com a versão na sua directoria de trabalho. Quando você usar este item de menu numa directoria, a operação de actualização irá ocorrer de forma recursiva, excepto se você tiver desactivado isto no ficheiro de configuração `.cvsrc`.

- ### 'Commit'

  Invoca o `cvs commit` para enviar as alterações feitas localmente para o repositório. Lembre-se que você deverá actualizar os ficheiros, antes de fazer isto. Caso contrário, quando outro utilizador tiver enviado as alterações dele anteriormente, o &CVS; poder-lhe-á mostrar uma mensagem de erro.

Todos este comandos são invocados como sub-processos pelo &kdevelop; sem ter quaisquer opções da linha de comandos ou variáveis de ambiente. Isto poderá ser um problema quando a ligação com o servidor do &CVS; vai através de uma ligação por &ssh; e necessita que você indique a sua senha de cada vez que você faz 'commit' (envia as alterações) ou 'update' (obtém as alterações dos outros). Isto é necessário, por exemplo, quando o seu projecto está alojado no `sourceforge.net`. Algumas possíveis soluções para este problemas estão descritas na FAQ do CVS/SSH, a qual poderá encontrar na documentação do SourceForge.

### Nos Bastidores

#### O Que o &CVS; Regista na Directoria de Trabalho

(... ainda não escrito ...)

## Lidar com os Programas Externos

Ainda que o &kdevelop; seja um ambiente de desenvolvimento integrado, ele nunca irá conter todas as funcionalidades que você deseja usar, e as capacidades do seu editor nunca serão suficientes para efectuar as tarefas dos processadores de texto usados frequentemente. Como um programa genuíno do &UNIX;, o &kdevelop; contém várias possibilidades para iniciar programas externos, programas em 'plugins' externos que lidam com os ficheiros, ou usar filtros externos para processar o conteúdo do editor.

A funcionalidade mais genérica e simples deste tipo é o menu de ferramentas, que você poderá configurar livremente. Isto é feito na janela em Configuração Configurar o KDevelop... nas Ferramentas externas.

As outras ferramentas serão discutidas no capítulo plugin-tools.

## Créditos

### Contribuições

- O conteúdo inicial deste manual foi escrito pelo Bernd Gehrmann bernd@kdevelop.org e pelo Caleb Tennis caleb@aei-tech.com.

- O Resumo do &automanag; e da Operação com o Gestor Automake foram escritos por Ian Wadham, ianw@netspace.net.au).

&app-menu;

## Teclas de Atalho

(... ainda não escrito ...)

&app-files;

## Ferramentas em 'Plugins'

O &kdevelop; contém um grande número de pequenas ferramentas que o ajudam a efectuar uma dada tarefa. A maior parte delas está implementada como um 'plugin'. Isto significa que, se não gostar de uma delas, poderá simplesmente desactivá-la na janela de Opções do projecto em 'Plugins' (para os 'plugins' ao nível do projecto) ou em Configuração Configurar o KDevelop.... Os 'plugins' que estiverem desligados não enchem os seus menus e não são carregados para a memória.

- ## O 'plugin' `abbrev`

  Este 'plugin' expande as abreviaturas em pedaços de código usados com frequência. Ele é activado se carregar em Ctrl Espaço. Por exemplo se você introduzir `"ife"` num ficheiro de C++ no editor e carregar em Ctrl Espaço, você irá obter um modelo de código `if-else` e poupar alguma escrita. O conjunto de abreviaturas suportadas depende da linguagem de programação do ficheiro editado. Por exemplo, para o PHP você irá obviamente estar interessado em modelos de código diferentes dos do &Java;.

  O conjunto de modelos de código é configurável. Você poderá ver quais os que estão disponíveis na janela Configuração Configurar o KDevelop... em Abreviaturas

- ## O 'Plugin' `filter`

  Isto oferece duas funcionalidades. Se você seleccionar o Ferramentas Executar um comando, você poderá indicar um comando da linha de comandos. O resultado deste comando será introduzido no texto do editor quando carregar no botão Iniciar.

  Uma funcionalidade relacionada está disponível em Ferramentas Filtrar a Selecção pelo Comando.... Para poder usar isto, você precisa de seleccionar uma área de texto no editor. Se você agora indicar um comando da linha de comandos e carregar no botão Iniciar, o comando é iniciado e a selecção é passada para o comando em si. O resultado do comando é então introduzido no editor.

- ## O 'plugin' de &doxygen;

  Este ajuda a usar a ferramenta de documentação da API &doxygen; (). Você poderá seleccionar Projecto Correr o Doxygen para gerar a documentação da API para o seu projecto actual, baseado na configuração dada pelo ficheiro `Doxyfile` na directoria do seu projecto.

  Para além disso, você poderá configurar o &doxygen; na janela Projecto Opções do projecto.... Esta janela é muito semelhante à da ferramenta &doxywizard;.

- ## O 'plugin' &ctags;

  Ainda que o navegador de classes lhe dê uma análise extensiva dos símbolos e classes do seu projecto, você poderá também querer usar a ferramenta 'ctags'. Em particular, esta suporta mais linguagens que o navegador de classes.

  Você activa este 'plugin' em Ferramentas CTags.... Quando o iniciar da primeira vez, você será pedido para gerar uma base de dados de procura em primeiro lugar. Quando aceitar isto, o programa &ctags; irá então ser iniciado e gerará um ficheiro chamado `tags` na directoria do seu projecto. Este é um ficheiro de texto que contém todos os símbolos dos seus ficheiros de código.

  Você poderá pesquisar na base de dados dos símbolos de duas formas: quando a opção Corresponder com a expressão regular estiver assinalada, o texto que você introduzir será interpretado como uma expressão regular (na variante do POSIX) e será correspondida com os símbolos existentes. Por exemplo, o texto `.*Widget` irá procurar por todos os símbolos que terminem em `Widget`. Se a opção não estiver assinalada, a pesquisa será textual.

  Ao pesquisar, você irá obter uma lista com os símbolos correspondentes, acompanhados dos números de linha em que estão definidos. Você poderá saltar para o ponto respectivo se carregar na lista.

  Para algumas linguagens, o &ctags; distingue os diferentes tipos de símbolos. Por exemplo, o Python tem classes e funções. Você poderá procurar de forma selectiva apenas as classes, assinalando os tipos respectivos na janela.

  A base de dados de símbolos não é normalmente actualizada logo que o seu código seja alterado. Por consequência, ao fim de algum tempo, os números de linha não serão mais correctos e as classes e as funções adicionadas como novas estarão em falta. Como tal, você deverá actualizar o ficheiro `tags` em intervalos regulares, carregando no botão Recriar.

- ## O 'plugin' `astyle`

  (... ainda não escrito ...)

- ## O 'plugin' `regexptest`

  O desenho de expressões regulares poderá ser bastante trabalhoso. Normalmente, a primeira tentativa de uma expressão regular corresponde a demasiadas sequências. Em particular, ao lidar com uma linguagem compilada, os tempos de reiterações ao depurar uma expressão regular poderão ser impossíveis. O 'plugin' 'regexptest' permite-lhe explorar directamente as alterações de uma expressão regular. Ele é activado ao escolher a opção Ferramentas Depurar a Expressão Regular....

  No grupo da variante, você poderá escolher o tipo de motor de expressões regulares que será usado. De momento são suportadas a variante da norma POSIX, que é usado pelo programa &grep;, e a versão POSIX extendida que é usada pelo programa &egrep;.

  Quando introduzir uma expressão, você irá obter um resultado imediato sobre os erros de sintaxe da mesma. Se introduzir um texto em Testar a sequência, você poderá ver se a expressão regular corresponde a este texto. Em particular, se a sua expressão regular contiver grupos, como por exemplo `([a-z])`, o conteúdo dos sub-grupos correspondentes será mostrado numa lista.

- ## O 'plugin' `konsole`

  (... ainda não escrito ...)

### Introdução

O &kdevelop; oferece módulos extensíveis ou componentes para serem carregados durante a execução e a pedido. Isto permite aos programadores só activar as funcionalidades que necessitam ou desejam para o seu desenvolvimento.

Alguns dos componentes são considerados globais — isto é, eles afectam toda a operação do &kdevelop;. Por exemplo, o componente 'uimode' permite a um programador escolher a interface de utilizador que deseja usar.

Os outros componentes são específicos do projecto, e só são utilizados quando um projecto desse tipo está carregado. O Gestor do Automake, por exemplo, só precisa de estar activo quando for carregado um projecto baseado no Automake. Caso contrário, este componente não estará activo.

Os componentes activos poderão ter vários efeitos no &kdevelop;. Dependendo da sua função, eles poderão adicionar menus extra, itens de menu extra, botões de barras de ferramentas extra, etc.

### Componentes de Gestão de Projectos no &kdevelop;

antproject | Gestor de Projectos ANT (aplicações em &Java;)
autoproject | Gestor de Projectos Automake
customproject | Gestor de Projectos Personalizado
trollproject | Gestor de Projectos QMake

### Partes Globais no &kdevelop;

Nome da Parte | Descrição
appwizard | Assistente de Novo Projecto
histórico |
konsole | Konsole Embebida
editor-chooser | Escolhe um editor de texto interno
doctreeview | Visualizador de Documentação
openwith |
fileselector | Um selector de ficheiros
uimode | Configurar o modo de interface gráfica
texttools | Ferramentas de texto adicionais
tipofday | Uma dica do dia
grepview | Um utilitário de grep gráfico
cvs | Suporte a CVS
ferramentas |
regexptest | Ferramenta de testes a expressões regulares
abbrev | Expansão de Abreviaturas
filter |
valgrind | Uma interface gráfica para o Valgrind

### Componentes de Suporte à Linguagem no &kdevelop;

cppsupport | Suporte a C/C++
fortransupport | Suporte a Fortran
javasupport | Suporte a &Java;
perlsupport | Suporte a Perl
phpsupport | Suporte a PHP
pythonsupport | Suporte a Python

### Componentes Específicas dos Projectos no &kdevelop;

astyle |
buglist |
classview | Gestor de Vista de Classes
ctags |
debugger | Gestor do Depurador da &GNU;
diff |
distpart |
doxygen |
fileview |
javadebugger |
manager |
nedit |
outputviews |
perforce |
qeditor |
scripting |
scriptproject |
sourcenav |
svn |
visualboyadvance |
windowmenu |

## Exemplo de Modos de Inteface de Utilizador do &kdevelop;

### Modo IDEAl

Carregue aqui para voltar à apresentação dos modos.

Imagem

Modo IDEAl do &kdevelop;

Carregue aqui para voltar à apresentação dos modos.

Imagem

Modo IDEAl do &kdevelop;, páginas fechadas

Esta imagem de exemplo demonstra uma das virtudes principais do modo IDEAl. Existe um espaço de trabalho máximo. De qualquer forma, qualquer janela de ferramentas está disponível prontamente se carregar na página respectiva.

Você irá necessitar provavelmente de algum tempo para se acostumar aos ícones da barra de páginas. Se você se perder, basta posicionar o rato em cima de um separador de página e esperar alguns segundos. Irá aparecer uma breve dica descritiva. Nesta imagem, a dica do Gestor do Automake é apresentada como exemplo. Ela descreve a página inferior da barra de páginas da direita.

Carregue aqui para voltar à apresentação dos modos.

### Modo de Janelas com Sub-molduras

Carregue aqui para voltar à apresentação dos modos.

Imagem

Modo de janelas com sub-molduras do &kdevelop;

Carregue aqui para voltar à apresentação dos modos.

### Modo por Páginas

Carregue aqui para voltar à apresentação dos modos.

Imagem

Modo por Páginas do &kdevelop;

Carregue aqui para voltar à apresentação dos modos.

### Modo de Janelas de Topo

Carregue aqui para voltar à apresentação dos modos.

Imagem

Modo de janelas de topo do &kdevelop;

Carregue aqui para voltar à apresentação dos modos.

## Mais Informações

### Obter Informações

(... ainda não escrito ...)

### Comunicar Erros

(... ainda não escrito ...)

### Licença

&underFDL; &underGPL;

## Alterações

### Alterações a Este Documento

- 2003-01-03 — Início deste ChangeLog

## Bibliografia

(... ainda não escrito ...)

### Manual do GNU Make

### GNU Automake

### GNU Autoconf

### Utilizar a GNU Compile Collection

Richard M.Stallman

### GNU Libtool

### GNU Autoconf, Automake e Libtool

1st edition

October 2000

New Riders Publishing ISBN 1578701902

### Programação Avançada no Ambiente do &UNIX;

1st edition

June 1992

W. Richard Stevens Addison-Wesley Pub Co ISBN 0201563177

### Thinking in C++, Volume 1: Introduction to Standard C++

2nd Edition

April 15, 2000

Bruce Eckel Prentice Hall ISBN 0139798099

### Open Source Development with CVS

2nd Edition

October 12, 2001

The Coriolis Group ISBN 158880173X

### Programming PHP

1st edition

March 2002

O'Reilly & Associates ISBN 1565926102

### Programming Python

2nd Edition

March 2001

Mark Lutz O'Reilly & Associates ISBN 0596000855

### Gui Programming With Python : Using the Qt Toolkit

Bk&Cd-r edition

January 2002

Boudewijn Rempt Opendocs Llc ISBN 0970033044

### Programming Perl

The Camel book

3rd Edition

July 2000

O'Reilly & Associates ISBN 0596000278

### Learning Perl

The Lama book

3rd Edition

July 15, 2001

O'Reilly & Associates ISBN 0596001320
&documentation.index;