]>

# El manual de usuario de KDevelop

Guía de referencia para el Entorno Integrado de Desarrollo KDevelop para sistemas Unix, versión 1.2.
Ralf
Nolden
El equipo de KDevelop

    Ralf.Nolden@post.rwth-aachen.de

21/03/2000
1.02.00

Este manual es parte del Entorno Integrado de Desarrollo KDevelop y está por tanto bajo la Licencia Pública General (GPL) GNU; vea Copyright para más información.

KDE
kdevelop

## Introducción

Como todo en este mundo, el mundo de los ordenadores se mueve por modas y hoy en día tiende al uso de software libre, incluso para utilidades comerciales. El proyecto de software libre más popular es Linux. Actualmente la gente está de acuerdo en que Linux, al igual que otros proyectos como el servidor web Apache, el lenguaje Perl y el conjunto de herramientas GNU, demuestra que el software libre puede ser de una calidad tan alta como el software comercial. Pero a pesar de la calidad, los usuarios finales siguen sufriendo los crípticos comandos de cualquier sistema Unix. Para que Linux prospere se necesitan aplicaciones, tanto libres como comerciales, que sean fáciles de utilizar.

El proyecto KDE
intenta cerrar este hueco, proporcionando un escritorio fácil de utilizar y las bibliotecas complementarias para aumentar la variedad de software basado en IGU
(Interfaz Gráfica de Usuario). El problema está en que la mayoría de los programas libres se crean en el tiempo libre del autor, y para ellos es importante que les guste su entorno de desarrollo. KDevelop quiere dar un importante paso hacia delante: hacer la vida del programador más fácil y eficiente. Los productos creados con KDevelop pueden alcanzar un nivel de funcionalidad y estabilidad más alto que otros productos creados sin él, en el mismo periodo de desarrollo.

Para alcanzar esta meta, el Entorno Integrado de Desarrollo KDevelop provee de muchas características que los desarrolladores necesitan, además de servir de interfaz para otros proyectos ajenos al KDevelop como pueden ser el `make` y los compilador
es de C++ de GNU, haciendolos invisibles al desarrollador y parte integrada del proceso de desarrollo. El KDevelop maneja:

- Todas las herramientas de desarrollo necesarias para programar en C++, tales como el compilador
  , el enlazador
  , el automake
  y el autoconf
  .

- Al KAppWizard
  (asistente de aplicaciones), que genera aplicaciones de referencia, completas y listas para utilizar.

- Un generador de clases, para crear nuevas clases
  e integrarlas en su proyecto.

- Un explorador de ficheros para los fuentes, las cabeceras, la documentación, etc. a ser incluidos en el proyecto.

- La creación de manuales de usuario en SGML
  y la generación automática de los ficheros HTML
  con el estilo del KDE.

- Documentación automática en HTML
  de las API
  de las clases
  del proyecto con referencias cruzadas a las bibliotecas utilizadas.

- Soporte para la internacionalización de su proyecto, permitiendo a los traductores añadir fácilmente su idioma al proyecto.

- WYSIWYG (del inglés, lo que ve es lo que consigue) - creación de interfaces de usuario con el editor de diálogos
  incorporado.

- Control de su proyecto por medio de un sistema de control de versiones (CVS), proporcionando una interfaz para la mayoría de las funciones necesarias.

- Depurado de su aplicación en conjunción con el KDbg

- Edición de los mapas de pixeles
  del proyecto con el programa KIconEdit
  .

- La posibilidad de incluir cualquier otro programa que usted considere necesario para el desarrollo de programas, mediante el menú de "Herramientas
  ".

KDevelop hace agradable el trabajar con todos los programas en el mismo entorno y ahorra tiempo al automatizar los procesos estándar de la tarea de desarrollo, además le da acceso directo y transparente a toda la información que necesite. Los mecanismos de navegación integrados están diseñados para soportar las peticiones de documentación
que los desarrolladores tengan en relación a su proyecto.

El visualizador de clases
y el buscador de errores le llevan a cualquier parte del código del proyecto con un solo click, sin necesidad de buscar ficheros; los árboles de ficheros le dan acceso directo a los ficheros del proyecto
y el sistema integrado de ayuda le ofrece acceso a la documentación en línea desde cualquier parte del EID (Entorno Integrado de Desarrollo).

### Cambios

La versión 1.2 d el KDevelop viene con la mayoría de facilidades necesarias para el desarrollo de aplicaciones en C/C++. Durante la fase de desarrollo del KDevelop, el proyecto ha mejorado mucho desde la versión final 1.0, seguida de la versión 1.1. Creemos que la versión actual será la última para KDE 1.x, dando a los desarrolladores el entorno que desean.

Se han realizado mejoras en los siguientes aspectos:

- Se incluye un rápido analizador y navegador de clases, con una vista de árbol de las clases. Además las clases y sus miembros pueden ser añadidos mediante diálogos.

- Soporta las funciones más necesarias de un CVS (sistema de control de versiones), tales como añadir, eliminar, actualizar o entregar ficheros y directorios.

- Documentación actualizada y extendida. Ahora se distribuyen cinco manuales con KDevelop.

- Se han corregido errores en el analizador de clases, en el editor de diálogos y en el buscador de errores.

- Se incluye un árbol de documentación actualizado, que le permite acceder directamente a la documentación de cualquier clase y de sus métodos.

Cualquier comentario sobre el entorno y su documentación, así como cualquier petición de nuevas características, es bienvenido.

### Acerca de este manual

Este manual da una visión general del EID KDevelop y describe escuetamente el proceso básico de desarrollo de una aplicación. Para más información sobre temas de programación, le recomendamos que lea el manual de programación de KDevelop incluido con el programa, que trata temas como la comprensión de los esqueletos de aplicación
generados y como crear aplicaciones KDE
avanzadas mediante proyectos de ejemplo.

El diseño de este manual está separado en las siguientes partes:

- Instalación. Enumera los requerimientos del programa y explica como instalar y configurar KDevelop.

- Programas. Explica como se crean programas con las herramientas de desarrollo GNU estándar y como se construyen.

- Desarrollo con KDevelop. Muestra como funciona el entorno.

- Descripción general. Explica los menús y los diálogos, además de los atajos
  de teclado.

- El sistema de ayuda. Muestra como utilizar el navegador de documentación
  y las funciones adicionales de ayuda.

- Trabajando con el editor. Explica las características de gestión y edición de ficheros.

- Proyectos. Describe la creación y mantenimiento de proyectos de software.

- Generación de ejecutables. Es una referencia sobre las opciones del Compilador
  , del enlazador, y del proyecto.

- El navegador de clases. Te detalla como hacer uso del potente navegador de clases del KDevelop.

- El editor de diálogos. Trata del constructor visual integrado de IGU
  y de el código
  C++ que genera.

- Configuración general. Muestra como puede modificar las opciones de uso del KDevelop.

- Preguntas y respuestas. Cubre preguntas relacionadas con el uso de KDevelop bajo diferentes tipos de Unix, y de soluciones para problemas habituales.

Si es un programador novato o un nuevo usuario de este producto, le recomendamos que lea este manual antes de empezar a utilizar el EID, ya que habla en profundidad del uso del mismo. Entender como hacer las cosas de la forma más rápida le ayudará a ahorrar tiempo buscando funciones y características, y le ayudará a utilizar la herramienta de una forma más efectiva.

## Instalación

### Cómo obtener el KDevelop

KDevelop puede ser encontrado en la página de aplicaciones del KDE
en \|\| o en la página web del KDevelop en \|\|. El programa también se incluye con algunas distribuciones, tales como la SuSE 6.1.

También puede obtener copias del repositorio CVS del programa desde su página web, para aquellos que quieran tener la última versión disponible del KDevelop. Normalmente, estas copias no están hechas para su uso habitual, sino para probar nuevas características y para mostrar los avances en el desarrollo del programa. Si desea obtener los programas ajenos que KDevelop necesita para funcionar, tales como KDoc
y KDbg
, también los puede obtener desde la web del programa.

Si encuentra problemas al compilar o utilizar KDevelop, por favor, lea la sección Preguntas y respuestas de este manual, o el fichero FAQ incluido con el paquete del programa. Si su problema no aparece mencionado, por favor suscríbase en la lista de correo de KDevelop en kdevelop@fara3.cs.uni-potsdam.de enviando un correo electrónico con la cabecera vacía, que contenga "subscribe" como único contenido. Sólo se aceptan preguntas y notificaciones de error que tengan que ver con el EID, y no relacionadas con problemas de implementación
que puedan surgirle mientras programa su aplicación. Recuerde que todos los mensajes enviados a la lista deben estar escritos en inglés, para que todos los que participan en ella puedan tomar parte de su problema y ayudarle mejor. La lista de correo también está creada para aquellos usuarios que quieran ayudar y que hayan encontrado soluciones para algún problema que les surgió, de forma que podamos solucionar errores
y utilizar su conocimiento para dar a los novatos ayuda de primera mano. Una buena forma de notificar errores es enviar la salida
que obtenga al ejecutar KDevelop desde la consola, o copiando y pegando el contenido de la ventana de mensajes
interna de KDevelop.

### Requerimientos

Para poder compilar y utilizar KDevelop necesita los siguientes programas y bibliotecas, que están disponibles para la mayoría de plataformas como paquetes de distribución, y que por tanto pueden ser instalados fácilmente.

Requerido:

- g++ 2.7.2/g++ 2.8.1/egcs 1.1 (o compatible), disponible en \|\|

- GNU make (o compatible), disponible en \|\|

- perl 5.004, disponible en \|\|

- autoconf
  2.12, disponible en \|\|

- automake
  1.2, disponible en \|\|

- flex 2.5.4,

- GNU gettext, disponible en \|\|

- Qt 1.42, disponible en \|\|

- KDE
  1.1.x, disponible en \|\|

Opcional:

- a2ps
  o enscript
  para poder imprimir

- ghostview o kghostview para poder previsualizar la impresión

- glimpse
  4.0 para el índice de búsqueda
  , disponible en \|\|

- sgmltools 1.0, disponibles en \|\|

- KDE-SDK
  (KDE Software Development Kit, Conjunto de herramientas de desarrolo para KDE), que incluye KDoc
  , KSgml2Html
  , KTranslator
  (disponible en \|\|)

- KDbg
  , disponible en \|\|

- KIconEdit
  (disponible en \|\|)

KDevelop fue probado con SuSE Linux 5.2 y con FreeBSD 3.0 en un AMD K6 200 con 64MB RAM, además de con SuSE Linux 6.0 en un Intel 200 MMX con 128MB RAM.

Por lo que saben los autores, tanto SuSE Linux como FreeBSD contienen todos los paquetes necesarios, incluyendo a2ps
y enscript
, como paquetes o como ficheros rpm, por lo que no debería tener problemas instalando los programas externos necesarios.

Documentación:

Para crear la documentación de las bibliotecas de KDE
, necesita que las fuentes del paquete kdelibs estén instaladas en su sistema. Además necesita el programa KDoc
(incluido con KDE-SDK
).

También se encuentra disponible en nuestra página una referencia
de C/C++, que se integra en navegador de documentación
tras su instalación. Descarga el paquete, cópialo como `superusuario` en el directorio del kde
y descomprímelo de la siguiente forma: `tar zxvf c&&lowbar;;c++&&lowbar;;reference.tar.gz`. La guía de referencia estará disponible desde el árbol de documentación; si no es así, al seleccionar la guía de referencia en el navegador, se mostrará un mensaje de error, con la URL desde la que se puede descargar y las instrucciones de instalación.

### Compilación e instalación

Para poder compilar e instalar KDevelop en su sistema, escriba lo siguiente en el directorio base de la distribución de KDevelop:

    	&&percnt;; ./configure
    	&&percnt;; make

    	(como superusuario)

    	&&percnt;; make install

Como KDevelop utiliza `autoconf
`, no debería tener problemas compilándolo.

Para poder compilar una copia del CVS de KDevelop, escriba lo siguiente:

    	&&percnt;; make -f <idx/Makefile.cvs/
    	&&percnt;; ./configure
    	&&percnt;; make

    	cambie a superusuario y escriba:

    	&&percnt;; make install

Si el comando make
de su sistema es `gmake`, escriba `gmake` en lugar de `make`.

### Arrancando KDevelop

Si utiliza KDE
como gestor de ventanas, KDevelop puede ser lanzado desde "K"&->;"Desarrollo"&->;"KDevelop 1.1". Como KDevelop soporta los tipos Mime de KDE
, puede también lanzarlo seleccionando un fichero de proyecto KDevelop ("*.kdevprj", mostrado con el icono de proyecto KDevelop) en el gestor de ficheros de KDE
. En este último caso, KDevelop se ejecutará y abrirá el proyecto seleccionado. Con otros gestores de ventana, abra la consola y escriba:

    &&percnt;; kdevelop

Para lanzar KDevelop con un proyecto ya existente, entre en el directorio del proyecto y escriba:

    &&percnt;; kdevelop  &<;suProyecto&>;.kdevprj

La primera vez que un usuario lance el KDevelop, se ejecutará el proceso de instalación automática, que le permitirá configurar las opciones más habituales. Si en algún momento se estropea su instalación, puede reconfigurar el KDevelop de dos formas. Puede escribir:

    &&percnt;; kdevelop  --setup

o, utilizando el KDE, puede seleccionar "K"&->;"Desarrollo"&->;"KDevelop Setup".

### El programa de instalación

KDevelop incluye un programa de instalación automática, que se ejecuta cada vez que se lanza KDevelop y no existe el fichero de configuración kdeveloprc. Le recomendamos que siga el proceso de instalación eligiendo "Proceder", para que el programa analice su sistema y para configurar el entorno KDevelop.

Los botones del diálogo de instalación ejecutan las siguientes acciones:

Ayuda: Mostrará este fichero de ayuda.

Proceder: Comienza el proceso de instalación y ejecuta las siguientes acciones

1. Búsqueda de los programas make/gmake, autoconf
   , autoheader, automake
   y perl, para la creación y compilación de las aplicaciones generadas por KDevelop. Si gmake está instalado, se usará como comando make
   . Posteriormente se puede elegir los parámetros que se le pasan al comando make, en el diálogo de configuración
   del menú Opciones. Si desea leer una introducción al desarrollo de programas en sistemas Unix, vaya a la sección Programas.

2. Búsqueda de los programas KDoc
   y glimpse
   . Éstos permiten crear una nueva documentación de la biblioteca KDE
   y un índice de búsqueda
   . Si se encuentran los dos programas, tanto el índice como la documentación se crearán en un paso posterior de la instalación.

3. Búsqueda de a2ps
   y enscript
   para permitir la impresión
   de documentos. Alguno de los dos programas ha de estar presente para permitir una correcta impresión. De todas formas, si nínguno de los dos está presente, al instalarse posteriormente alguno de ellos, se puede elegir imprimir con él sin pasar otra vez por la configuración del programa. Unicamente hay que elegir el programa en el diálogo de impresión.

4. Búsqueda de KDbg
   , KIconEdit
   y KTranslator
   . Le recomendamos que instale estos programas, ya que son buenos compañeros para la creación de aplicaciones KDE
   . KDbg
   se puede utilizar para depurar
   su proyecto; KIconEdit
   sirve para mostrar y editar las imágenes
   que usted seleccione en el árbol de ficheros. Los programas KDbg
   , KIconEdit
   y KTranslator
   aparecerán disponibles (si se encuentran) en el menú Herramientas
   de KDevelop. Posteriormente se pueden añadir más herramientas al menú, mediante la opción Herramientas
   ... del menú Opciones.

5. Resumen de los programas encontrados: se muestra una lista que indica los programas que se encontraron, y los que no. Se muestra también una pequeña sugerencia, si la presencia de algún programa es recomendada.

6. Detección del camino hasta la documentación de la biblioteca Qt
   . Busca la misma en la mayoría de localizaciones estandar para la documentación y configura el camino automáticamente. Si la documentación no es encontrada, porque no está instalada, o porque está en un camino distinto a los habituales, aparecerá un diálogo, que le dará como opciones seleccionar manualmente su situación o continuar. Si elige seleccionar manualmente la situación de la documentación, se le mostrará un diálogo para elegir su localización. Normalmente estará en el directorio qt/html. Tras hacer esto, la instalación puede ser continuada pulsando en "Proceder" otra vez.

7. Si KDoc
   es encontrado, se le pregutará si desea crear/actualizar la documentación de las bibliotecas de KDE
   . Para hacer esto, necesita tener las fuentes de dichas bibliotecas. A los usuarios de Linux que hayan instalado KDE desde una distribución, les recomendamos que copien y descompriman las fuentes del paquete de bibliotecas de KDE a su sistema; los usuarios de Free BSD que instalaron las bibliotecas como paquete, deberían buscar el paquete distfile adecuado. Si ninguno de estos casos es aplicable a su situación, descargue los ficheros fuente desde \|\| y descomprímalos en su sistema. Si lo desea, puede utilizar una documentación ya creada, que se encuentra disponible en \|\|; en ese caso, cancele este paso y continúe creando el índice de búsqueda
   . Cuando la instalación termine, configure el camino hasta la documentación en el diálogo Configuración de KDevelop y vuelva a crear el índice de búsqueda, mediante la opción presente en el mismo diálogo.

   El diálogo "Actualización de la documentación de la biblioteca KDE
   " está preparado para utilizar $HOME/.kde/share/apps/kdevelop/KDE-Documentation como el camino por defecto para la documentación. Lo único que debe de hacer es elegir el camino hasta los fuentes de la biblioteca, con el botón situado en la parte superior del diálogo, y pulsar Aceptar. Ejemplo: si obtuvo el el paquete kdelibs.tar.gz desde \|\| y lo descargo a su directorio $HOME, debe abrir una consola o terminal y ejecutar "tar zxvf kdelibs.tar.gz". Los fuentes se descomprimirán en el directorio /home/nombredeusuario/kdelibs, que contendrá los fuentes de cada biblioteca en un subdirectorio. La biblioteca kdecore estará en el directorio /home/nombredeusuario/kdelibs/kdecore, etc. En el diálogo de actualización deberá elegir el camino a todas las bibliotecas, en este caso /home/nombredeusuario/kdelibs/. Tras pulsar Aceptar, un mensaje en la ventana de instalación le informará de que se está generando la documentación y de que debe esperar al siguiente mensaje.

   NOTA: En un sistema multiusuario
   o en sistemas con cuotas de disco
   para las cuentas de usuario, la instalación de documentación HTML
   para todos los usuarios sería una perdida de espacio. Es este caso, pida al administrador del sistema que ejecute KDevelop como superusuario, para que pueda acceder al directorio raiz del sistema. Entonces instale la documentación dentro del directorio de KDE
   , en $KDEDIR/share/apps/kdevelop/KDE-Documentation. El camino hasta este punto se puede configurar más tarde en el diálogo Configuración de KDevelop
   , en el menú Opciones
   .

8. Si se encontró el programa glimpse
   en su sistema, se le ofrecerá la posibilidad de crear una base de datos de búsqueda. La base de datos de búsqueda puede incluir la documentación de KDE
   y la documentación de las Qt
   (opción por defecto). Además, la documentación del KDevelop será incluida e indexada. Si desea crear un índice de cualquier otra documentación, puede seleccionar su directorio y serán incluidas en el proceso.

9. Durante la creación del índice de búsqueda
   la ventana de instalación mostrará un mensaje, indicando el proceso que se está realizando.

10. Si todos los pasos de la instalación se realizaron correctamente, aparecerá un mensaje final anunciando que el programa KDevelop será ejecutado tras pulsar Aceptar. Recuerde que puede configurar otras opciones adicionales, tales como el guardado automático de ficheros, en el diálogo Configuración del KDevelop, que es accesible a través del menú Opciones.

Cancelar: Mostrará un mensaje advirtiendo de que el proceso de instalación va a ser cancelado. Desde este diálogo se puede volver a la instalación ("Retroceder") o arrancar KDevelop con los valores por defecto ("Continuar"). En este último caso, deberá configurar todas las opciones manualmente desde los diálogos de configuración
del menú Opciones.

## Programas

Ahora que ya ha instalado KDevelop satisfactoriamente, y que las opciones más utilizadas están configuradas, se estará preguntándose si este programa ofrece lo que promete. En este capítulo se le dará una guía sobre como crear programas con las herramientas GNU y sobre la parte que KDevelop juega en el proceso.

### El compilador

El compilador
es el programa que, como mínimo, debe estar instalado en su sistema para poder crear programas ejecutables; este programa es el que compila el código fuente, transformándolo en ficheros objeto con los que crea el programa.

Normalmente, lo ejecutaría de esta forma: Abra el editor que suela utilizar - no use un procesador de textos. Escriba algo como lo siguiente para crear el código fuente de su primer programa:

    #include <iostream.h>

    int main(){

    cout << "Hola Mundo" << endl;

    }

Bueno, todo lo que el programa hará será imprimir la cadena "Hola Mundo" en la salida
estandar. En cualquier caso, este es el código del programa a generar, no el programa propiamente dicho. Necesitamos un compilador
, en este caso un compilador
de C++ como g++. Guarde el código fuente como, por ejemplo, miprograma.c e invoque el compilador
con el nombre del fichero (en la consola):

    g++ -o miprograma miprograma.cpp

Ahora ya se puede ejecutar el programa. Escriba `miprograma` en la consola. El programa mostrará la cadena; después finalizará.

### Make y ficheros Makefile

Vale, ya tiene todo lo que necesita: un editor y un compilador
. Además puede ejecutar sus propios programas C++... Pero no es todo tan fácil, ¿qué pasa si tiene más de un fichero fuente? Además, ¿Tiene que compilar todos los ficheros cada vez que modifique uno? A medida que los programas se hacen más grandes, se vuelven más costosos y complejos de compilar, ya que tiene que ejecutar todos los comandos y opciones directamente. La solución pasa por crear un fichero con el nombre Makefile
(en realidad puede tomar cualquier nombre menos el del programa) en el que insertar todos los comandos necesarios para compilar
el programa, por supuesto con unas normas de sintaxis. Si las herramientas make
o gmake
están instaladas, lo único que tiene que hacer es escribir el nombre de la herramienta en el directorio en el que el fichero Makefile se encuentra (si el fichero tiene otro nombre es necesario pasar el parametro `-f nombrefichero'). En ese momento la aplicación make toma el control y se encarga de la compilación del programa. La aplicación make tiene otras muchas ventajas y puede ser utilizada para muchos propositos. Para obtener una visión más clara de la herramienta, abra la consola y escriba:

`man make`

o busque "GNU Make" en la ayuda del KDE, en "System GNU Info contents".

Ahora ya se habrá dado cuenta de las razones por las que un desarrollador necesita la herramienta make, para facilitar la compilación de sus aplicaciones. Sin embargo, el problema que existía hasta ahora era que escribir los ficheros Makefile
era un trabajo costoso y que requería que el programador se aprendiera las opciones y la sintaxis de make. Afortunadamente, con el KDevelop esto se hace innecesario. Tan sólo tiene que elegir las opciones que desea para el make en el diálogo Configuración del KDevelop. KDevelop se encarga de crear el fichero Makefile y de generar la aplicación con él, todo sin necesidad de teclear nada. Sencillamente utilice los botones de la barra de herramientas, a partir del segundo separador, o elija la función deseada en el menú "Construir".

La barra de herramientas y el menú "Construir" le ofrecen las funciones más habituales a la hora de utilizar el make:

- Compilar fichero
  : sólo está activado si está trabajando con un fichero fuente. Llama al comando make, indicándole que compile únicamente el fichero abierto.

- Make: llama al make y crea el objetivo.

- Reconstruir todo: reconstruye el proyecto entero.

- Limpiar/Reconstruir todo: primero limpia el directorio del proyecto y después ejecuta el programa make.

- Parar la construcción: cancela el proceso en ejecución. Normalmente se utiliza cuando se está viendo como make hace su trabajo, a la vez que observa el código, y de repente -ooooh- se da cuenta de que hay un error en el código sin corregir. En ese caso sólo tiene que pulsar Parar, corregir el error, y volver a ejecutar make.

Compilar los ficheros no es lo único que KDevelop realiza con la ayuda de make. Otras cosas más propias de las aplicaciones KDE
, como la creación de los ficheros con los mensajes del programa para su traducción, también son controladas por KDevelop y make, por lo que no debe preocuparse por ellas.

Ahora ya debería tener unos conocimientos básicos sobre los fuentes, el compilador
, y porque el programa make es necesario. En la próxima sección, se hablará sobre como los proyectos creados con KDevelop pueden ser compilados en la mayoría de sistemas Unix gracias al fichero de comandos `configure`.

### Configure

El título de esta sección puede que le lleve a preguntarse ¿configure? ¿Qué he de configurar? Bueno, supongamos que ha escrito un programa que incluye un fichero Makefile
. Le gustaría distribuirlo, pero el programa compilado sólo funciona en su sistema y en aquellos que sean compatibles con él. Para que funcione en otras plataformas distintas a la suya, tales como otros sistemas Unix o máquinas Alpha o RISC, hay que recompilar el programa. La manera más fácil sería copiar los ficheros fuente y ejecutar make
en la otra máquina. Pero, ¿que pasa si la otra máquina utiliza otro compilador
? (o tiene algún otro problema al compilar el programa). Eso sin pensar en que los directorios de instalación del programa y su documentación pueden ser distintos. Ejemplo: los programas KDE
puede que en su máquina se instalen en ``opt/kde/, pero en otra máquina puede que estén instalados en ``usr/local/kde/ o en otro sitio. En este caso, tendría que modificar el fichero Makefile
cada vez, para asegurar la correcta compilación e instalación de su producto.

Afortunadamente, las herramientas GNU no sólo le proporcionan el mítico `make`, también incluyen otros dos paquetes: automake
y autoconf
. El prefijo "auto" de las utilidades puede inducirle a pensar que, por fin, algo relacionado con el diseño de la aplicación puede hacerse rápida y fácilmente. Pues ha acertado.

La tarea de Automake es, generalmente, crear un fichero `Makefile.in
` desde un fichero llamado `Makefile.am
`, que usted debe crear para su proyecto. Este fichero Makefile.am
está compuesto por varias macros, que intentan reducir la complejidad de make y hacer que este fichero sea escrito más rápido y de forma más segura que el Makefile
..

Habiendo dicho esto, ¿quién se encarga de crear finalmente el fichero Makefile
? Aquí es donde aparece autoconf
. Autoconf necesita varios ficheros de macros para funcionar: el fichero Makefile.in
(creado por automake), y el fichero `configure.in`. Por un lado, el fichero Makefile.am
(y por tanto el .in) contiene los macros que especifican que ficheros deben compilarse, que ficheros pertenecen al paquete, y cual será el nombre del fichero o biblioteca que se cree. Por el otro lado, el fichero configure.in contiene macros que configure utilizará para saber lo que tiene que buscar en el sistema. Por ejemplo el nombre del compilador
, las bibliotecas necesarias para crear el binario, etc.

Por ejemplo, supongamos que desea crear una aplicación KDE
. Tras escribir el código, querrá distribuir el programa entre la comunidad de usuarios, y cada usuario tendrá que compilar el binario. Lo que haría sería escribir un fichero configure.in que contenga las macros necesarias para crear una aplicación KDE. Estas macros se encargarían de comprobar que la biblioteca Qt está instalada, de buscar las cabeceras de Qt, de encontrar las bibliotecas y cabeceras de KDE, etc.

Resumen: Para crear una aplicación según el estándar GNU, que se pueda transportar a distintas máquinas y sistemas Unix, necesita hacer lo siguiente:

1. escribir el código de su proyecto

2. escribir un fichero Makefile.am
   para cada subsirectorio, incluyendo el directorio principal del proyecto

3. crear un fichero configure.in en el directorio principal del proyecto que contenga los requerimientos del sistema

4. ejecutar automake

5. ejecutar autoconf

Y el trabajo principal está hecho. Automake crea el fichero Makefile.in
, autoconf procesa el fichero configure.in y crea un fichero de comandos (script) llamado `configure`. Cuando se ejecute ./`configure`, se realizarán todas las comprobaciones que fueran necesarias, creandose un(os) fichero(s) Makefile
que permitirán la ejecución del make para la creación del binario.

Puede que todo esto parezca un montón de trabajo para crear una aplicación pequeña, además de que hay que aprender como escribir las macros correctas. Pero el hecho de que está permitiendo la compilación del programa, en prácticamente todos los sistemas Unix, valdrá la pena tarde o temprano. Además, sólo tiene que hacer esto una vez por cada proyecto, y si el número de ficheros del mismo se incrementa, tan sólo debe añadir los nuevos ficheros a las macros.

Ahora, ¿hasta que punto el KDevelop te ayuda con los anteriores aspectos de la programación? Pues hasta el punto de que no será necesario que sepa nada sobre macros y ficheros de comandos. Todos los detalles al respecto se ocultan tras la interfaz gráfica, que es la que se encarga de este trabajo. Las aplicaciones se crean por tanto de una forma muy agradable (con las herramientas GNU):

Crea la aplicación con el asistente de aplicaciones
, únicamente tiene que elegir el tipo de aplicación que desea crear, ya sea una aplicación de terminal o un programa que utilice las bibliotecas Qt o KDE
. Todo el trabajo se realiza automáticamente, y su fichero ya contendrá los ficheros Makefile
creados con la ayuda de las herramientas GNU.

Y no hay nada más. Ya está preparado para extender el código de su proyecto, tal vez con nuevas clases
, diálogos, traducciones o documentación, todo esto también automatizado. Tan sólo tiene que concentrarse en el verdadero trabajo del desarrollador, que es hacer que aplicación que desea crear sea util. En la mayoría de los casos, lo más probable es que no llegue a tocar los ficheros Makefile
mientras trabaje con KDevelop.

### Depuración

La siguiente sección trata sobre un término usado comúnmente por los desarrolladores: el depurado. La depuración de un programa consiste en asegurarse de que el programa no fallará ni se colgará durante la ejecución, debido a algún fallo en el código. Como nota curiosa, mencionaremos que a este tipo de fallos también se les suele llamar con el anglicismo bug (bicho). Esto es debido a que en los primeros ordenadores, los primeros errores que se produjeron fueron debidos a que había bichos dentro de ellos, que estropeaban los circuitos. Obviamente, hoy en día esto es sólo una anécdota y los fallos se encuentran, como ya hemos dicho, en el código. En las herramientas GNU, encontramos el depurador de GNU, el `gdb`. Este programa permite inspeccionar los valores internos de una aplicación en ejecución, además de permitir que esta se ejecute paso a paso, mediante la introducción de puntos de interrupción en el código. Gdb para la ejecución del programa cada vez que este llega a un punto de interrupción. Como en el resto de herramientas, el depurador puede ser manejado desde otro programa que sirva de interfaz de usuario, facilitando la inspección de variables y la distribución de puntos de interrupción.

Para este propósito, la aplicación de su proyecto se crea, por defecto, con la opción de depurado del compilador
, que hace que se guarden datos adicionales junto al ejecutable, para poder localizar valores y líneas dentro del código. KDevelop utiliza el programa KDbg
, que es una interfaz de usuario para el gdb. Para depurar su programa, tan sólo tiene que seleccionar "Depurar" en el menú "Construir", o pulsar el botón correspondiente en la barra de herramientas, que es el que tiene dibujados un engranaje con gafas, representando que desea observar la ejecución de la aplicación.

KDevelop abre entonces la ventana de herramientas
y lanza su aplicación con KDbg
. La interfaz de KDbg
aparecerá dentro de la ventana, permitiendo el uso del programa como si hubiera sido ejecutado desde el exterior.

En general, los pasos descritos arriba intentan mostrar, claramente, lo que un desarrollador tiene que hacer al comenzar a escribir su propia aplicación, tratando temas que son comunes a todo los proyectos. Además, se ha explicado la parte de estos que KDevelop realiza y como intenta proveer una forma fácil de programar en Unix. Si desea obtener más información sobre el papel y la razón de ser de las herramientas GNU, debería leer la documentación que se entrega con ellas, normalmente accesible desde la sección "System GNU Info contents" en la ayuda de KDE.

## Desarrollo con KDevelop

En este capítulo obtendrá una visión general sobre como utilizar KDevelop y el editor de diálogos
interno para crear sus propias aplicaciones. Esto implica que todas las herramientas serán descritas en función de su uso en el proceso de desarrollo. Si es un principiante en el diseño y programación de aplicaciones C++ con interfaz de usuario, debería leer el Manual de programación de KDevelop, que describe algunas cosas básicas para el diseño de programas y muestra el uso, de forma más detallada, de KDevelop, con proyectos de ejemplo que puede seguir paso a paso para acostumbrarse a la forma en que se crean aplicaciones con KDevelop. Además, debería haber leído el capítulo Programas, para tener un conocimiento general sobre el por qué las aplicaciones Unix deben utilizar algunas de las herramientas de desarrollo incluidas; esto le ayudará a que las cosas estén más claras cuando se referencia a los ficheros Makefile
, etc.

### ¿Qué son los proyectos de KDevelop?

Los proyectos creados con KDevelop intentan facilitar el uso de las herramientas GNU a los desarrolladores. Los proyectos de KDevelop se encargan de la creación de los ficheros Makefile
, evitando tener que crearlos a mano, además facilitan el transporte de los programas a plataformas diferentes gracias a la creación de ficheros configure con autoconf
.

Al distribuir su aplicación, lo único que el usuario final debe tener para compilar el programa es un compilador
de C++ y las bibliotecas de desarrollo necesarias, que suelen estar instaladas; por supuesto, también se puede distribuir un paquete con la aplicación ya compilada. En cualquier caso, no hace falta que el usuario final tenga instalado el KDevelop. A la hora de distribuir los ficheros fuente, le recomendamos que incluya el fichero de proyecto de KDevelop, ya que facilitará que otros usuarios de KDevelop puedan trabajar con sus fuentes. La distribución de este fichero se hace necesaria para proyectos que se realicen por varios desarrolladores, tal vez trabajando desde lugares distintos, ya que de esta forma asegurará la consistencia del fichero Makefile
, evitando problemas. Permitirá además que, en aplicaciones multilíngüe, los traductores no tengan que trabajar con el código, salvo en los casos que halla que modificarlo para permitir su traducción. En cualquier caso, éstos agradecerán las opciones de KDevelop a la hora de añadir un nuevo idioma, permitiendo que el trabajo se reduzca a la traducción.

Cuando utilice KDevelop para sus propios proyecto, normalmente empezará creando una nueva aplicación con el asistente de aplicaciones
. Desde ahí puede elegir el tipo de proyecto que se corresponde con el tipo de aplicación que desea crear. Tras esto, puede empezar a desarrollar la interfaz de usuario, añadiendo controles
que ya estén construidos en las bibliotecas y sólo tienen que ser llamados desde la aplicación, o construyendo nuevos en el editor de diálogos. A continuación va la ampliación de la interfaz de usuario, cambiando y extendiendo las partes que KDevelop ya haya añadido, como las barras de estado, de menús, y de herramientas. Como los recursos están agrupados en ficheros de recursos, se pueden extender sencillamente añadiendo nuevos valores a los existentes; los recursos generados por KDevelop pueden utilizarse como referencia a la hora de crear nuevos. Tras implementar los métodos que el editor de diálogos creo vacios, o los que contienen código para acciones estándar, debería extender el manual de usuario editando el fichero SGML
incluido, para describir las características de la aplicación. El último paso sería generar los ficheros de traducción y distribuir el proyecto entre los traductores.

KDevelop facilita la creación de nuevos proyectos incluso cuando la aplicación no tiene interfaz de usuario
. El editor y el navegador de clases, junto con las facilidades para gestionar el proyecto que proporciona KDevelop, le ayudarán a reducir el tiempo de desarrollo al mínimo necesario para implementar
su funcionalidad.

### Breve descripción de las herramientas
de KDevelop

Con KDevelop ha elegido un paquete que, junto con otras herramientas, le ofrecerá un entorno bajo sistemas Unix flexible y adecuado para el desarrollo de aplicaciones orientadas a objetos. KDevelop está compuesto básicamente por el entorno de programación y por el editor de diálogos
; el resto de programas que pueden ser útiles al diseñar una aplicación también están incluidos, de una forma u otra.

#### El entorno de programación y el editor de diálogos

##### El entorno de programación

El entorno de programación es la interfaz de usuario que KDevelop ofrece para crear y mantener proyectos, utilizando implícitamente otras herramientas para simplificar su uso. El editor incorporado, junto con los navegadores de documentación y de clases, reduce la cantidad de trabajo que el programador ha de realizar durante el proceso de desarrollo. La facilidad de uso del programa hace que proceso de escribir aplicaciones para Unix sea agradable, y ayudará probablemente a reducir los ciclos de desarrollo y a mejoras en el desarrollo. Desde el entorno, podrá controlar todos los detalles de su proyecto, tendrá una visión general de sus clases
y se le hará innecesario utilizar la consola para su trabajo. Además, la integración de todas las interfaces de usuario hace que usted sólo tenga que trabajar en una ventana, evitando tener que controlar un montón de ventanas repartidas por el escritorio.

##### El editor de diálogos

El editor de diálogos
incorporado en KDevelop ofrece una manera fácil de diseñar interfaces de usuario que utilicen las bibliotecas Qt o KDE
. Su funcionamiento le permite realizar casi todas las acciones con el ratón, lo que facilita una mayor rapidez a la hora de construir diálogos y ventanas para su aplicación, que serán transformados en código C++ para ser añadidos al proyecto. Como el editor de diálogos
es parte de la interfaz de usuario de KDevelop, en él tiene las mismas opciones disponibles que cuando está programando. Esto permite, por ejemplo, construir un diálogo, generar su código, y probarlo desde el programa, gracias a la disponibilidad de las opciones de make. Además puede ver los mensajes del compilador
sin necesidad de volver al modo de edición. Para obtener una descripción más detallada del editor vea el capítulo \|\|.

#### El asistente de aplicaciones
y las herramientas de clases

El asistente de aplicaciones
y las herramientas de clases incluidas para la creación del proyecto, y para la extensión automática del código, tienen la intención de hacer que la creación de aplicaciones sea lo más fácil y segura que sea posible, ofreciendo a aquellos con poca experiencia con Qt y KDE
una buena manera de empezar a diseñar IGUs (interfaces gráficas de usuario), ya que se pueden conseguir resultados rápidamente.

##### El asistente de aplicaciones

La función del asistente de aplicaciones
es ayudar a crear proyectos de aplicaciones que estén listas para ser ejecutadas, con la ayuda de las herramientas GNU estándar, además de ayudar a crear aplicaciones con interfaz de usuario, que hagan uso de las bibliotecas KDE
y Qt. Mediante la introducción de una información mínima, el usuario puede empezar a trabajar en un nuevo proyecto en cuestión de segundos. Cuando vaya a crear una nueva aplicación con KDevelop lo primero que debe hacer es llamar al asistente de aplicaciones
.

El asistente de aplicaciones
creará el esqueleto de la nueva aplicación, con todos los ficheros fuente en C++ necesarios para ejecutar la aplicación. Después de que le de nombre al proyecto y configure los datos necesarios, se creará su nuevo proyecto y usted tendrá una aplicación completa, con diversas funciones (en el caso de proyectos Qt y KDE), sin que tenga que escribir ni una línea de código C++. Una vez configuradas todas las opciones posibles del asistente, su aplicación ya se creará con:

- una interfaz SDI (interfaz de un solo documento), basado en el modelo document-view-controller

- menús y diálogos para abrir y guardar ficheros, además de diálogos de impresión

- barras de herramientas y de estado, con completa funcionalidad

- un sistema de ayuda, con un manual de usuario creado en SGML
  y con ayuda en la barra de estado

- completa documentación de la API (interfaz de programación de la aplicación) del proyecto

- rutina de instalación a través de make

El asistente de aplicaciones
está disponible desde el menú Proyecto, desde la entrada "Nuevo...".

##### Herramienta de clases

El termino "herramienta de clases" se refiere a un grupo de utilidades, disponibles para el desarrollador, que le permiten trabajar con los fuentes del proyecto de una forma orientada a objetos. Lo que se intenta es hacer que el programador se preocupe más por las clases
que por los ficheros, de forma que se concentre en los objetos que contiene el proyecto. KDevelop ofrece para esta tarea un generador de clases y un navegador de clases, cada uno de los cuales ofrece una gran cantidad de opciones automatizadas.

###### Creando una nueva clase con el generador de clases

Tras crear un proyecto con el asistente de aplicaciones
lo siguiente que debería hacer, como desarrollador, es añadir un conjunto de clases
adecuadas para el diseño de su aplicación. La forma habitual de hacerlo, sin KDevelop, sería crear unos nuevos ficheros de cabecera y de implementación, añadirlos manualmente al fichero Makefile.am
correspondiente, y empezar a escribir las declaraciones
e implementaciones
las clases
. Para simplificar el proceso, el generador de clases le permite hacer todo esto, tan sólo diciendo el nombre de la nueva clase, la clase padre, la forma de herencia, y alguna información extra, como una pequeña descripción de lo que hace, para la documentación. Además, puede cambiar el nombre de los ficheros que se crearán, si no le gustan los que pone por defecto el generador, y también puede decidir si la clase estará preparada desde el principio para soportar el mecanismo de ranuras y señales (slot/signal) de Qt.

El resto del trabajo se realiza automáticamente. No tiene que preocuparse del fichero Makefile.am
ni de ningún fichero extra. Lo único que hace falta para que la clase aparezca en el proceso de compilación es invocar al programa make. Como el navegador de clases se actualiza cada vez que se añade una clase, las declaraciones
e implementaciones
están disponibles inmediatamente, para que usted pueda empezar a trabajar en extender la clase. Se puede llamar al generador de clases desde el menú Proyecto, desde la entrada "Nueva clase...
"

###### El navegador de clases

EL navegador de clases muestra todos los objetos y funciones de su proyecto en un árbol situado a la izquierda de la ventana de edición. Un analizador de clases busca todos los métodos y clases
disponibles en los ficheros y los muestra mediante siímbolos gráficos. Desde ellos, los menús contextuales ofrecen funciones especificas, que permiten trabajar con los ficheros centrándose en las clases
y funciones.

Al seleccionar una clase se mostrará el fichero que contiene su declaración
; al seleccionar un método o función se mostrará su implementación
. Para obtener una descripción más completa, vea el capítulo El navegador de clases.

### El proceso de desarrollo

El desarrollo de una aplicación con KDevelop puede dividirse, como norma general, en dos partes: en la primera se genera el esqueleto del programa con el asistente de aplicaciones
, la segunda consiste en el desarrollo del programa con el resto de herramientas que proporciona KDevelop y depende de la habilidad que tenga como programador. Para describir el proceso de desarrollo, hemos dado por hecho que usted desea crear una aplicación Qt o KDE
, lo que significa utilizar la mayor parte de las posibilidades que KDevelop ofrece para este tipo de proyectos, para que tenga un "¿Cómo..." (o HOW-TO en inglés) general.

#### Creando el esqueleto del programa

Habitualmente, para empezar a crear su aplicación, lo primero que hará será llamar al asistente de aplicaciones
, introducir el nombre del proyecto, y generar el programa. Para hacer esto, el asistente crea un fichero de proyecto para la aplicación e inserta aspectos del KDevelop en el fichero Makefile.am
que se utilizará posteriormente al extender la aplicación. El fichero de proyecto es el que tiene que cargar cuando desee abrir el proyecto posteriormente.

Se accede al asistente de aplicaciones
desde el menú "Proyecto", en la entrada "Nuevo...". Cuando el asistente aparezca, tiene que elegir el tipo de proyecto en la primera página. Pulsando "Siguiente >>" llegará a la siguiente página, en la que tiene que introducir el nombre del proyecto, la versión, el directorio, y sus datos personales. La página 3 ofrece algunas opciones para el uso de un sistema de control de versiones, mientras que las 4 y 5 permiten editar las cabeceras de los ficheros de cabecera y de implementación
. Si ya tiene alguna cabecera en un fichero y desea utilizarla como plantilla, también puede hacerlo. La última página contiene las ventanas de salida
y de errores. Cuando pulse en "Crear", su aplicación será generada, y las acciones que se realicen podrán ser observadas en la ventana de salida
. Si en ella aparece la palabra READY, significa que el asistente de aplicaciones
ha terminado y ya puede pulsar "Salir" para volver al entorno de programación. Para crear el binario, elija "Make" en el menú "Construir" o pulse el botón correspondiente en la barra de herramientas. Puede probar las funciones que ya están presentes en el programa eligiendo "Ejecutar" en el menú "Construir".

#### Desarrollando una aplicación

Esta sección describe la fase de desarrollo de una aplicación con KDevelop y el editor de diálogos
, además de mostrar todo lo que se puede realizar con el EID.

El proceso de desarrollo se compone, habitualmente, de los siguientes pasos: se editan los ficheros fuente, se compilan y se enlazan para crear el binario final, se buscan los errores
que hayan aparecido durante el proceso anterior o durante la depuración
, se añade la documentación y las traducciones. El problema es que todos estos pasos pueden acabar intercalandose entre ellos y no es fácil describir una forma general con la que crear una aplicación. Normalmente, lo más habitual es crear primero todas las partes visibles del proyecto, tales como la vista principal y los diálogos de configuración. Después se genera el código fuente y se implementan todas las conexiones que deben realizarse, como cambiar las barras de menús y de herramientas, añadir mensajes de ayuda (para los menús) a la barra de estado, y llenar las nuevas funciones miembro con los objetos que muestren los diálogos. Después se suele compilar la apliación y probar sus funciones, arreglar los errores que se encuentren, y volver a probarla. Las siguientes secciones explican como se realiza todo esto. Por supuesto, cuando realice su propia aplicación, puede que elija otra forma de hacerla. KDevelop le da suficiente facilidad para que decida que es lo que quiere hacer en cada momento.

##### Interfaces de usuario

La interfaz de usuario es la parte de la aplicación que se le muestra al usuario, además de con la que interactúa. Por lo tanto, esta interfaz está compuesta habitualmente de las barras de menús, herramientas, y estado, además de una vista principal que sería, por ejemplo, aquella en la que se introduce texto, en un editor. El asistente de aplicaciones
puede crear aplicaciones que ya contengan la mayor parte de la estructura de la interfaz de usuario, incluyendo menús y botones. Cuando desarrolle sus propias aplicaciones tendrá que ampliar la estructura, para darle a la aplicacion todas las posibilidades de interacción que usted desee. Parte del trabajo consiste en diseñar diálogos, por ejemplo para cambiar el tamaño de una brocha en un programa de dibujo. Esto puede realizarse fácilmente con el editor de diálogos
incorporado. Ahora, ¿como crear diálogos que sean agradables a la vista? La respuesta está en la biblioteca Qt
, que es en realidad una herramienta para crear interfaces de usuario (IGU). Para ello ofrece un conjunto base de controles
, como etiquetas para mostrar texto, campos de texto para la entrada de texto, botones... Además de estos objetos de "bajo nivel" (respecto a la IGU), también ofrece diálogos estándar listos para usar, por ejemplo diálogos de impresión
. Las bibliotecas KDE
están basadas en la biblioteca Qt y contienen sustitutos para algunos de los diálogos, además de controles
adicionales que pueden ser utilizados en su aplicación. Todo esto significa que, cuando empiece a diseñar el comportamiento de su aplicación de cara al usuario, debería familiarizarse con los controles que tanto Qt como KDE
ofrecen. La documentación en línea de la biblioteca Qt ofrece imágenes de la mayoría de ellos, por lo que le recomendamos que le eche un vistazo en cuanto pueda. Después, le recomendamos que se informe sobre la biblioteca KDE-UI, que ofrece controles
adicionales. Otras bibliotecas como la KHTML
ofrecen controles
muy especializados, que son usados por muchos programas. Su función es simplificar el diseño de aplicaciones, al igual que los diálogos predefinidos que vienen con la biblioteca Qt. Cuando diseñe sus propios diálogos, le recomendamos que utilice estos controles especializados. Un diálogo está formado, básicamente, por un grupo de controles
combinados para crear la interfaz, siendo programado en código C++ dentro de una clase que deriva de `
QWidget` o de una clase de diálogo más especializada, que a su vez es derivada de `
QWidget`. Esto significa que el programa que utilice el control necesita un objeto de la clase de dicho objeto. Con esto se acaba prácticamente todo lo que necesita para entender como se utilizan los diálogos o vistas. El editor de diálogos
de KDevelop permite construir diálogos e interfaces de usuario de forma visual, evitando que tenga que crear los diálogos en C++ directamente (que es la forma difícil de crear interfaces). Salte al editor de diálogos
eligiendo la entrada correspondiente del menú "Ver" (o pulsando en el botón de la barra de herramientas). Verá que la apariencia del KDevelop ha variado pero que, por ejemplo, las barras de menús y herramientas son muy similares. Esto facilita el cambio entre los dos modos de trabajo, y hará que se sienta comfortable en los dos en poco tiempo. Desde el editor puede construir sus vistas y diálogos como desee, y modificar las propiedades de todos los elementos que utilice. Cuando termine, seleccione "Generar fuentes..." desde el menú "Construir"; el programa se encargará del resto. Puede comprobar si todo fue bien pulsando en "Ejecutar make" o "Ejecutar", para construir la aplicación con los nuevos ficheros fuente. Pero no espere que los diálogos estén disponibles desde el principio. Se requiere algo de programación primero, pero no se preocupe, no será muy difícil. Si desea más información sobre la creación de diálogos, vea el capítulo El editor de diálogos, también podrá encontrar ejemplos y guías de estilo en el manual de programación.

##### Incluir nuevos elementos

Tras haber creado la interfaz de usuario y haber generado sus ficheros fuente, está preparado para que su aplicación utilice estos nuevos elementos. Como se ha descrito arriba, una aplicación basada en IGU
contiene barras y una vista principal; además la vista principal interacciona con las barras, que son parte de la clase principal de la aplicación, y con el objeto documento que esté abierto. Usando el lenguaje del diseño orientado a objetos, la arquitectura usada se podría definir como un modelo "Documento-Vista-Controlador". Este modelo describe las funciones básicas de los objetos de una aplicación dependiendo de su papel dentro del programa. El Controlador representa al coordinador de la aplicación principal, ofreciendo la interacción con el usuario a través de la barra de menús y, opcionalmente, de las barras de herramientas y de estado. La clase Documento se encarga de la tarea de mostrar el documento con el que el usuario está trabajando. Esto implica que la clase Documento debe ser la encargada de realizar las acciones del tipo cargar/guardar documentos. La Vista es el centro de la ventana de la aplicación, mostrando visualmente al usuario una parte del documento y ofreciéndole facilidades para manipular los datos. Como las barras de herramientas, menús y estado ya están creadas, su trabajo consistirá en crear la vista principal y los diálogos adicionales con los que el usuario pueda configurar cualquier opción, o acceder a funciones adicionales.

Para construir su vista principal, el código generado para su aplicación ya contiene una clase llamada &<;SuAplicación&>;View, que hereda de la clase `
QWidget` (esta clase es la clase mínima necesaria para manejar interfaces gráficas en aplicaciones Qt, y por tanto también en aplicaciones KDE
). En general, hay tres formas de ampliar la clase dada:

- eliminando la estructura de vista de documentos y utilizando uno de los controles
  "grandes" incluidos, que ya contienen una gran número de funciones. Tan sólo tiene que eliminar la clase View y reemplazar el objeto view por otro.

- cambiando la herencia de la clase View. Cambie la herencia, por ejemplo, a la clase QMultiLineEdit y su aplicación será un editor.

- si su vista principal consiste de distintas partes, cree los controles
  y sus clases
  con el editor de diálogos
  , y cree los objetos de estas clases
  en los constructores de la clase View, al combinarse crearán la vista principal.

Con los diálogos, el proceso es algo diferente. La forma normal de llamar a un diálogo sería a través de una entrada de menú, o de un icono de la barra de herramientas. Tras haber construido el diálogo y haber generado los fuentes, la clase está disponible para crear un objeto que será el diálogo. Lo primero que hay que hacer es buscar un lugar apropiado en el menú en que añadir la entrada que, al ser seleccionada, mostrará el diálogo. Si los menús existentes no se corresponden con la función del diálogo, cree un nuevo menú, igual que el resto, y añada la entrada y la ranura a la que llamar cuando se seleccione el elemento. Entonces implemente la ranura, creando una instancia de la clase diálogo y llamando al diálogo con las funciones miembro
proporcionadas por la clase base. También debe proporcionar un identificador a la entrada de menú. La aplicación princpial tiene listados todos los identificadores ya utilizados en el fichero resource.h, por lo que lo único que tiene que hacer es añadir el identificador y darle un nuevo número. Con esto ya se ha acabado, aunque también podría añadir otro icono a la barra de herramientas, y añadir un mensaje de ayuda para la barra de estado. En cualquier caso, su aplicación ofrece ahora una nueva opción al usuario. Lo único que hay que hacer ahora es añadir la implementación
de los metodos que utilizará el diálogo. Para acabar, llame a la herramienta make, o ejecute la aplicación, y los ficheros modificados serán recompilados; el resultado de los cambios podra ser entonces comprobado rápidamente.

##### El proceso completo de desarrollo

Arriba se ha hablado de la manera habitual de comenzar a trabajar en una nueva aplicación, usando KDevelop, y de como ampliar la interfaz de usuario. Estos son los pasos más habituales en los que el EID le ayuda, pero KDevelop no sólo ofrece herramientas para crear aplicaciones e interfaces. A continuación, se dará una pequeña descripción de las principales facilidades que KDevelop ofrece para mejorar el desarrollo de aplicaciones.

###### Administración del código

KDevelop ofrece una gran cantidad de opciones para que el programador alcance su meta en el menor tiempo posible. Como se ha descrito arriba, el asistente de aplicaciones
y el editor de diálogos
reducen la cantidad de tiempo que se necesitaría para conseguir el mismo resultado manualmente. Pero no se ha hablado de la principal tarea del programador: implementar
el correcto funcionamiento de la aplicación. La pregunta es, ¿por qué utilizar KDevelop como entorno de desarrollo, incluso para crear aplicaciones sin IGU
?

Implicitamente, el EID se encarga de controlar su proyecto; esto es: no tiene que preocuparse de guardar los cambios, de generar el fichero Makefile
, etc. Se está proporcionando una completa administración del proyecto, siendo aquídonde KDevelop ofrece todas sus posibilidades, en cualquier tipo de desarrollo en C++. Es fácil entender que, al hacer que el programador se olvide de la administración del proyecto, se consigue una mayor concentración en la programación del código. Por otro lado, el código suele estar distribuido en diversos ficheros a lo largo del proyecto, para separar ciertas partes. Normalmente, esto significaría que el desarrollador tendría que encargarse de crear cada uno de estos ficheros, y de insertar las líneas que todos ellos suelen llevar como norma general, como las cabeceras con la fecha y el nombre del autor, la licencia con que se distribuye el código, etc. Además, esto implicaría que el desarrollador se acordara, en todo momento, de en que ficheros se encuentra cada función, declaración e implementación de cada clase. Para evitar todo esto, KDevelop contiene la herramienta de clases, que proporciona una serie de acciones que facilitan el trabajo del desarrollador y permiten que se centre en los objetos, clases
, estructuras y métodos que contiene la aplicación, en lugar de en sus ficheros. El generador de clases le permite crear una nueva clase, pudiendo especificar su documentación, sus atributos y si posee algún tipo de herencia. En lo que al trabajo orientado a objetos se refiere, el navegador de clases le posibilita localizar sus objetos; no importa en que parte del código estén. El navegador recorre todos los fuentes y se actualiza para mostrar información actualizada sobre los objetos, permitiéndole acceder a cualquier nuevo código directamente. Mediante los menús contextuales, el navegador le ofrece aún más posibilidades, como mostrar la implementación
de la clase o la declaración
de sus funciones miembro
. Con esto, la adición de miembros se hace mediante diálogos, no hace falta buscar el fichero y la línea en la que se ha de introducir el código. Por último, puede obtener una visión más directa de las clases de su proyecto con la ayuda del diálogo de clases
, que le muestra un árbol en el que se puede ver el uso, los contenidos y la herencia de las clases
y sus objetos. Para obtener una información más detallada, vea el apartado sobre el navegador de clases.

###### Construyendo y ejecutando su aplicación

KDevelop está diseñado para eliminar todos esos pasos que se deben realizar periódicamente, tales como la construcción y ejecución de su programa, además de la localización de errores
en el código fuente.

Puede comenzar el proceso de construcción:

- pulsando en los botones "Construir" o "Reconstruir todo" de la barra de herramientas

- o seleccionando "Construir"/"Reconstruir todo" desde el menú Construir.

Para ejecutar su aplicación, elija:

- los botones "Ejecutar" o "Depurar" (que abrirá el depurador junto a su programa) de la barra de herramientas

- las entradas de menú correspondientes del menú Construir

- o seleccione "Ejecutar con argumentos" para lanzar su aplicación pasándole argumentos adicionales.

Para obtener más información sobre el proceso de construcción, vea el apartado Proyectos.

###### Buscando errores en el programa

Como la aparición de errores
es habitual, tanto durante el proceso de construcción (en el que son detectados por el compilador
y en el que son llamados errores
sintácticos, porque son resultado de errores de sintaxis en los fuentes) como durante la ejecución de la aplicación, estos errores tienen que ser detectados y eliminados por el programador. Para encontrar estos errores
, el desarrollador necesita saber la razón exacta de su existencia. Como se ha mencionado, el compilador
es capaz de detectar errores
de sintaxis el solo, dando como resultado que el ejecutable no se cree (esto también puede pasar en enlazado, cuando el enlazador
detecta "símbolos sin resolver"-vea Opciones de enlazado). Como se da una descripción del error lo más detallada posible, el error puede ser encontrado y eliminado. Durante el proceso de construcción, verá que aparece la ventana de salida
mostrando los mensajes de la herramienta make y del compilador. En caso de que aparezcan errores
o avisos
, tan sólo pulse con el ratón sobre el mensaje de error y el editor mostrará el fichero afectado y moverá el cursor a la línea que contiene el error. Esto también puede ser realizarse desde las entradas del menú "Ver" "Siguiente error" y "Anterior error" o mediante sus atajos
de teclado. Encontrará que estas funciones son muy útilas y ahorran mucho tiempo en ir a los errores, lo cual le dará más tiempo para solucionarlos.

Los errores en tiempo de ejecución, que ocurren durante la ejecución de la aplicación y suelen resultar en un dallo de segmentación, suelen ser más difíciles de encontrar. Para encontrarlos más fácilmente, puede decirle al compilador
que añada información dentro del binario que permita observar su ejecución con el código fuente. Runtime Errors, which occur during execution and will mostly result in a segmentation fault, are sometimes hard to find. Un depurador es otro programa que le permite hacer esto, lanzando la aplicación y permitiéndole poner puntos de interrupción en el código para que la ejecución del mismo se detenga en ellos, de forma que pueda controlar las zonas críticas
de la implementación y encontrar al menos de esta forma la línea que provocó el error. Encontrar la causa del error es una tarea que ya depende del programador. El depurador gdb viene con el compilador
GNU y los programas del tipo ddd o KDbg
son interfaces de usuario para facilitar su uso. KDevelop utiliza el KDbg
y le permite comenzar el proceso de depurado
desde la entrada "Inicio" del menú "Depurar" o desde el botón "Depurar" de la barra de herramientas. Para obtener más información sobre aplicaciones de depurado, vea el capítulo Proyectos y el manual de programación de KDevelop.

### Información adicional

Los temas de los que se ha hablado en este capítulo son tratados con más detalle dentro de la documentación incluida con KDevelop, además de en otras documentaciones:

- El manual de programación de KDevelop, que incluye una completa introducción al diseño de la interfaz de usuario de aplicaciones, y a la programación con las bibliotecas Qt y KDE
  ,

- este manual, en las secciones desde Descripción general hasta Proyectos, donde se descubren todas las funciones disponibles con KDevelop,

- este manual, en la sección El editor de diálogos, donde se trata el uso del editor de diálogos
  para la creación de sus propios controles
  ,

- la guía de referencia
  en línea de la biblioteca Qt
  , que contiene ejemplos de uso de la biblioteca Qt para crear interfaces de usuario, además de una guía de referencia de las clases, y de capturas de pantalla mostrando los controles
  más importantes incluidos en la biblioteca,

- la guía de referencia
  de las clases de KDE, generada automáticamente por KDevelop desde los fuentes de la biblioteca KDE, que contiene descripciones de todas las clases
  y controles
  , además de código de ejemplo mostrando su uso,

- en Internet, vea:

  - \|\| para encontrar información sobre los controles Qt y sobre controles adicionales de otros desarrolladores,

  - \|\| para obtener información sobre el proyecto KDE y sobre las guías de estilo para el desarrollo,

  - \|\| para ver referencias adicionales sobre el desarrollo de aplicaciones KDE,

  - y la página web de KDevelop \|\|

## Descripción general

Mirando al KDevelop, la interfaz de usuario puede describirse en función de sus partes lógicas: la ventana principal, la vista de árbol y la ventana de salida
, todo ello rodeado por las barras de menú, de herramientas y de estado. Esté capítulo describe la razón de ser de cada parte de la interfaz, comenzando por las ventanas y acabando en las barras y las posibilidades que ofrecen.

### Ventana principal

La ventana principal está compuesta por cuatro tabuladores, de los cuales los dos primeros se utilizan para la edición. Primero aparece la ventana de ficheros de cabecera/recursos, para editar los las cabeceras y otros ficheros de texto, tales como la documentación en SGML
, después aparece la ventana de C/C++ para la edición del código fuente. A éstas les sigue la ventana de documentación, que se muestra en formato HTML
. Por último viene la ventana de herramientas
, para el uso de programas externos como KIconEdit
y KDbg
, que son incrustados en la ventana. Cualquier herramienta que esté registrada es accesible desde el menú Herramientas
, siendo posible registrar programas externos desde un diálogo de configuración
(vea Configuración general). Para obtener una descripción de las posibilidades de las ventanas del editor, vea el capítulo Trabajando con el editor, y para hallar información sobre el navegador de documentación
, vea el apartado Utilizando el navegador de documentación.

### El navegador de clases y los visores de ficheros

#### El visor de clases

El visor de clases
(VC
) muestra las clases
de su proyecto, además de las funciones y variables
globales. El abrir el árbol le mostrará todas las funciones miembro
y los miembros, junto a un icono que indica sus atributos
(privada, protegida, pública, ranuras y señales), para que pueda ver visualmente las propiedades de los miembros, sin necesidad de abrir los ficheros de cabecera. El seleccionar el nombre de una clase abrirá el fichero de cabecera que contiene la clase y colocará el cursor al comienzo de la declaración
de la clase. El seleccionar funciones miembro
abrirá el fichero de implementación
y situará el cursor sobre la cabecera de la función. En el caso de los elementos, KDevelop buscará en el fichero de cabecera y posicionará el cursor en la línea en que se declara el elemento. El visor de clases
también ofrece menús contextuales que ofrecen opciones más específicas, vea el capítulo El navegador de clases para obtener más información.

#### El visor lógico de ficheros

El visor lógico de ficheros (VLF
) le permite ver los ficheros ordenados por grupos. Se pueden añadir nuevos grupos pulsando con el botón derecho en los elementos del árbol. Esto buscar ficheros de forma más directa, mostrandose inicialmente sólo los ficheros incluidos en el proyecto. Los ficheros, al seleccionarse, serán abiertos conforme a su tipo Mime. Por ejemplo, le gustará que al elegir un gráfico
en el VLF
se abrá KIconEdit
(si está instalado) en la ventana de herramientas, con el dibujo seleccionado abierto.

#### El visor real de ficheros

El visor real de ficheros (VRF
) muestra el árbol de directorios del proyecto con todos los ficheros, para que pueda editar ficheros que no sean del proyecto
, o ficheros ocultados por el VLF
como configure.in y los ficheros Makefile
. Desde el menú contextual puede realizar acciones como la eliminación o adición de ficheros al proyecto abierto.

#### El árbol de documentación

El árbol de documentación (DOC
) muestra toda la documentación HTML
disponible que esté configurada como libro. El seleccionar un libro hará que se muestre la primera página en la ventana del navegador. Además, el menú contextual ofrece opciones de configuración personal, para añadir más paquetes de documentación en HTML
.

### La ventana de salida

La ventana de salida está separada a su vez en una ventana de mensajes, una ventana de entrada/salida por defecto, y una de salida de errores, con el siguiente propósito:

- ventana de mensajes: muestra los mensajes de salida
  del compilador
  . Si pulsa en un mensaje de error, la ventana de edición moverá el cursor a la línea en que se encontró el error.

- salida estándar: muestra la salida de las aplicaciones basadas en terminal que mensajes a la salida estándar
  del ordenador. Nota: las aplicaciones de terminal ahora se lanzan en una ventana de consola externa.

- salida de errores: muestra todos los mensajes de error que su programa produce. Es útil para realizar pruebas. La ventana de salida está programada para aparecer cada vez que se llama a un proceso externo, como make o una aplicación de terminal.

### Opciones de la barra de menús

#### Manejo de ficheros e impresión

Esta sección trata las funciones que KDevelop ofrece para el manejo de ficheros; se puede acceder a ellas desde el menú Archivo o desde los iconos correspondientes en la barra de herramientas:

- Nuevo Ctrl+N Abre el diálogo de "Nuevo fichero
  ", permitiendo crear un nuevo fichero. El fichero puede ser creado con la ayuda de diversos patrones. Hace falta especificar tanto el nombre del nuevo fichero como el directorio en que se creará.

- Abrir Ctrl+O muestra el diálogo "Abrir fichero..." y le permite seleccionar el fichero a abrir.

- Cerrar Ctrl+W Cierra el fichero abierto en la ventana de edición activa

- Guardar Ctrl+S Guarda el fichero abierto en la ventana de edición activa. Si el fichero aún no había sido guardado, se abrirá el diálogo "Guardar como..." para que elija el nombre del fichero y donde se guardará.

- Guardar como... Abre el diálogo "Guardar como..." para permitirle guardar el fichero con un nuevo nombre

- Guardar todo Guarda todos los ficheros modificados

- Imprimir... Ctrl+P Abre el diálogo "Imprimir fichero", desde el que puede seleccionar diversas opciones de impresión, usandoa2ps
  , enscript
  o lpr

- Salir Ctrl+Q Cierra KDevelop. Si se han modificado ficheros, se le preguntará si desea guardar dichos ficheros

#### Editando ficheros

Aquí, se tratan las entradas del menú "Editar" y sus iconos correspondientes de la barra de herramientas. Las funciones de edición también están disponibles a través de un menú desplegable en el editor
.

- Deshacer Ctrl+Z Deshace el último paso de edición.

- Rehacer Ctrl+Y Le permite recuperar el último paso deshecho.

- Cortar Ctrl+X Corta una selección de texto y la copia al portapapeles del sistema.

- Copiar Ctrl+C Copia una selección de texto al portapapeles del sistema. También copia texto seleccionado en el navegador de documentación.

- Pegar Ctrl+V Inserta el contenido del portapapeles en la posición del cursor.

- Indentar Ctrl+I Mueve el texto seleccionado hacia la derecha.

- Desindentar Ctrl+U Mueve el texto seleccionado hacia la izquierda.

- Insertar fichero... Ctrl+Insert Le permite seleccionar un fichero e insertar su contenido en la posición del cursor.

- Buscar... Ctrl+F Abre el diálogo de búsqueda, que le permite buscar una expresión en el fichero abierto. Para buscar en varios ficheros, utilice "Buscar en ficheros...".

- Repetir búsqueda F3 Repite la última búsqueda. También sirve para busquedas realizadas en la documentación, cuando la expresión se encontró más de una vez en la misma página. La siguiente ocurrencia de la expresión se mostrará al seleccionar "Repetir búsqueda" o F3, siendo resaltada.

- Reemplazar... Ctrl+R Abre el diálogo "Buscar y reemplazar" que le permite buscar una expresión en el texto y reemplazarlo por una nueva.

- Buscar en ficheros... Ctrl+Alt+F Muestra el diálogo "Buscar en ficheros...", que usando el programa `grep
  ` busca un texto en directorios, mediante comodines. Los resultados se muestran con una lista de ficheros, línea y expresión. Seleccionando una entrada de la lista se mostrará el fichero y el cursor se situará en la línea en que se encontró la expresión

- Seleccionar todo Ctrl+A Selecciona todo el texto del fichero abierto en la ventana de edición activa

- Deseleccionar todo Deselecciona todo el texto del fichero abierto. Se utiliza habitualmente cuando se han realizado selecciones múltiples, para no tener que ir deseleccionando individualmente cada selección.

- Invertir selección Invierte la selección. El texto que está seleccionado deja de estarlo y el que no lo estaba pasa a estar seleccionado.

#### Configuración de visionado

El menú ver controla las funciones para abrir y cerrar ventanas, y ofrece comandos para habilitar/deshabilitar las barras de herramientas y de estado, además de permitir saltar a los errores
del código.

- Ir a la línea... Ctrl+G Abre el diálogo "Ir a la línea..." que le permite introducir el número de línea del fichero abierto que se desea ver. El último número de línea introducido es recordado y marcado, para que pueda volver a esa línea otra vez o introducir el número de una nueva línea que desea ver.

- Siguiente error F4Salta al siguiente error que KDevelop detecte desde la ventana de salida
  . El mensaje de salida
  , lanzado por make o otra herramienta, debería darle una descripción del programa, para que pueda solucionar el error.

- Anterior error Shift+F4 Salta al error anterior del que se tenga constancia.

- Editor de diálogos Ctrl+D Salta al editor de diálogos
  .

- Vista de árbol Ctrl+T (des)Habilita la vista de árbol, situada a la izquierda de la vista principal. Contiene el navegador de clases, el árbol de documentación y los árboles de ficheros.

- Vista de salida Ctrl+B (des)Habilita la vista de salida, situada en la parte inferior de la vista principal.

- Barra de herramientas
  (des)Habilita la barra de herramientas.

- Barra
  de navegación (des)Habilita la barra de navegación, que contiene botones de retroceso, avance y búsqueda para el navegador.

- Refrescar Recorre todos los ficheros para reconstruir el navegador de clases. El progreso de la acción se muestra en el indicador de progreso de la barra de estado.

#### Creación y mantenimiento de proyectos

Esta sección describe las funciones disponibles desde el menú "Proyecto", que pretenden cubrir la creación y el mantenimiento de proyectos.

- Nuevo... Lanza el asistente de aplicaciones
  y le permite crear un nuevo proyecto, seleccionando el tipo, el nombre, la versión y otras opciones.

- Abrir Muestra el diálogo "Abrir proyecto", desde el cual puede seleccionar el proyecto KDevelop a abrir. Tras seleccionarlo, el proyecto será cargado.

- Abrir proyecto reciente... Contiene un submenú con los últimos 5 proyectos abiertos. Con este menú puede abrir proyectos más fácilmente.

- Cerrar Cierra el proyecto abierto. Esto se hace automáticamente al salir de KDevelop, por lo que si lo hace manualmente llame al asistente de aplicaciones
  o abra otro proyecto para seguir utilizando el programa.

- Nueva clase
  ... Llama al generador de clases para crear una nueva clase, que será añadida al proyecto abierto. El generador de clases le permite especificar el nombre de la clase, su herencia, y los ficheros de la nueva clase.

- Añadir fichero(s) existente(s) Abre un fichero desde el que puede seleccionar un grupo de ficheros a añadir al proyecto actual y el directorio al que se copiarán. Si selecciona un directorio destino que no estaba incluido en el proyecto, ej. creando un nuevo subdirectorio, KDevelop copiará los ficheros al nuevo subdirectorio y creará un nuevo fichero Makefile.am
  . Tras copiar con éxito los ficheros, el proyecto será reconstruido por automake
  y and autoconf
  para incluir el nuevo subdirectorio en el proceso de construcción.

- Añadir nueva traducción... Abre un desde el que seleccionar el idioma de la traducción que será añadida al proyecto. Esta función esta principalmente para ser usada por los traductores, que pueden añadir fácilmente su idioma al proyecto y trabajar en su traducción sin tener que preocuparse de los ficheros Makefile.am
  .

- Propiedades del fichero Mayús+F7 Abre el diálogo "Propiedades del fichero", que muestra una copia del VLF
  y las opciones del fichero. Desde aquí puede modificar propiedades como dónde se instalará el fichero y su tipo.

- Crear mensajes y mezclar Se utiliza para crear el fichero de mensajes de su proyecto. El fichero de mensajes contiene todas las cadenas que han sido configuradas en los fuentes como traducibles y se utiliza por los traductores para crear el fichero .po de su idioma.

- Crear doc. de la API
  Llama a KDoc
  con los ficheros de cabecera del proyecto y genera una salida
  en HTML
  con la documentación de las clases
  de su proyecto.

- Crear manual de usuario Ejecuta KSgml2Html
  sobre el fichero SGML
  de su manual, creando el manual de usuario en HTML
  . Si KSgml2Html
  no está instalado, se utilizará sgml2html para este propósito.

- Crear distribución:

  - Fuente-tgz Crea, en el directorio del proyecto, un fichero de distribución del proyecto abierto, con los fuentes del mismo, listo para entregar a los usuarios finales. El usuario final tiene que ejecutar `tar zxvf suproyecto.tar.gz` para descomprimirlo en un directorio, y ejecutar los comandos `./configure, make` y `make install` dentro del directorio creado, para compilar e instalar el programa.

- Opciones F7 Abre el diálogo "Opciones del proyecto", que le permite cambiar varias opciones de su proyecto. Por ejemplo, se puede cambiar el número de versión, o las opciones del compilador
  para pasar -02 como parámetro y optimizar el binario.

#### Construcción de proyectos

Esta sección describe el menú Construir, que contiene todas las acciones relacionadas con make, además de otras acciones como la reconstrucción de la ayuda en línea del proyecto, o la documentación de la API
.

- Compilar fichero... Ctrl+F8 Sólo se puede seleccionar si la ventana de edición abierta es la de C++. Únicamente compila el fichero de implementación
  abierto y le permite ahorrar tiempo en caso de que sospeche que existen errores
  .

- Ejecutar make F8 Llama al comando make
  con su proyecto y construye el objetivo.

- Reconstruir todo Reconstruye todos los objetos y el objetivo de su proyecto.

- Limpiar/Reconstruir todo Elimina del directorio del proyecto todos los ficheros generados por el comando make y reconstruye el objetivo.

- Parar la construcción F10 Para el proceso en ejecución.

- Ejecutar F9 Ejecuta su objetivo tras construir el programa con make.

- Ejecutar con argumentos Alt+F9 Ejecuta el objetivo con argumentos. Primero se muestra un diálogo para permitirle especificar los argumentos de ejecución (que serán guardados en el proyecto para la siguiente sesión), tras esto, la aplicación recibe los argumentos introducidos. Recuerde que su aplicación será ejecutada desde el directorio del proyecto.

- Depurar... Ejecuta KDbg
  en la ventana de herramientas
  para depurar la aplicación. KDbg
  abrirá automáticamente el fichero que contenga la función main() y ejecutará la aplicación.

- Distclean Elimina todos los ficheros generados por el proyecto, tales como objetos, etc. Se ha de ejecutar Distclean antes de distribuir el proyecto, para que la distribución no contenga ningún fichero dependiente de la plataforma, como los creados por el compilador
  .

- Autoconf y automake
  Ejecuta el programa make sobre el fichero Makefile.dist
  , situado en el directorio principal del proyecto. Este fichero contiene todos los comandos necesarios para que los programas automake
  , autoconf
  etc. construyan su proyecto. Si ha cambiado macros o añadido ficheros manualmente, debería ejecutar autoconf, seguido de configure, para volver a crear todos los ficheros Makefile
  .

- Ejecutar configure Ejecuta el archivo de comandos configure generado por autoconf
  . Si no se puede ejecutar el comando, ejecute autoconf y vuelva seleccionar configure.

#### Llamando a las herramientas

El menú de herramientas
contiene, por defecto, entradas para los siguientes programas, si están instalados: KDbg
, KIconEdit
y KTranslator
. El programa de instalación de KDevelop comprueba si están instalados para insertarlos, en el orden mencionado, en el menú. Al seleccionar una herramienta se abrirá la ventana de herramientas
y se ejecutará el programa seleccionado en esta ventana. El menú de herramientas
puede ser modificado desde la entrada Herramientas...
del menú Opciones; vea Configurando el menú "<idx/Herramientas/".

#### Cambiando la configuración de KDevelop

El menú Opciones contiene entradas para lanzar todos los diálogos de configuración
desde los que cambiar la configuración de KDevelop. Los apartados de configuración más importantes, tales como los de impresión
y los de configuración del editor
, tiene sus propias entradas en el menú; otros apartados más generales pueden ser modificados desde el diálogo Configuración de KDevelop.

- Editor... Le permite modificar el comportamiento del editor, por ejemplo con las selecciones, al partir palabras, etc.

- Colores del editor... Desde aquí, puede seleccionar los colores del editor
  , por ejemplo, el color de fondo.

- Por defecto del editor... Selecciona la apariencia por defecto del editor, por ejemplo permite cambiar el tipo y tamaño de letra del editor
  .

- Resaltado de sintaxis... Este diálogo le permite configurar los tipos de letra y colores que se usarán para resaltar los distintos lenguajes de programación, incluyendo HTML
  .

- Navegador de documentación... En este diálogo tabulado, puede seleccionar los tipos de letra, los tamaños y los colores del navegador de la ayuda
  .

- Configurar impresora... Contiene entradas para los diálogos de configuración
  de la impresión, según el programa de impresión
  utilizado, a2ps
  o enscript
  .

  - a2ps
    Configura la impresión para ser utilizada con a2ps
    . Vea Impresión para obtener más información.

  - enscript
    Configura la impresión para ser utilizada con enscript
    . Vea Impresión para obtener más información.

- Herramientas
  ... Abre el diálogo de configuración de herramientas
  . Desde él, puede configurar el menú herramientas
  , añadiendo o eliminando programas a ser lanzados en la ventana de herramientas
  .

- Configuración de KDevelop Abre el diálogo Configuración de KDevelop. Desde el primer tabulador se configuran las preferencias generales. A este tabulador le siguen los de configuración de teclas y de documentación. Desde el tabulador de documentación se puede generar una nueva documentación en HTML
  de la biblioteca y reconstruir el índice de búsqueda
  del navegador de la ayuda
  .

#### El menú Ventana

El menú Ventana contiene una lista con todos los ficheros abiertos. Esto le permite saltar rápidamente a otro fichero con el que esté trabajando.

#### Gestión de marcadores

El menú Marcadores esta pensado para añadir y eliminar marcadores
que desee situar en el fichero en edición. Como KDevelop utiliza dos ventanas de edición, cada una configura sus marcadores
por separado.

- Alternar marcador Ctrl+Alt+T Pone un marcador a la línea en que el cursor esté situado. Si la línea ya tiene un marcador, lo quita.

- Siguiente marcador F5 Salta al siguiente marcador del documento abierto.

- Anterior marcador Mayús+F5 Salta al anterior marcador del documento abierto.

- Vaciar marcadores Ctrl+Alt+C Vacia la lista de marcadores de la ventana de edición abierta o del navegador. Ej. si la ventana visible es la de ficheros de cabecera, sólo se borran los marcadores de esta ventana.

- Ventana de cabeceras Contiene la lista de marcadores
  de la ventana de cabecera. Los marcadores
  se asignan sólo al fichero abierto, por que si cambia de fichero los marcadores
  no se perderán, pero no estarán accesibles para el nuevo fichero.

- Ventana de C/C++ Contiene la lista de marcadores
  de la ventana de C/C++. Su funcionamiento es idéntico al de la opción anterior.

- Ventana de navegación Contiene la lista de marcadores
  de la ventana de navegación. Al seleccionar un marcador se abrirá el navegador en la página seleccionada.

#### Ayuda en línea

El menú Ayuda contiene entradas para navegar por el navegador de documentación
, además de entradas para las bibliotecas. Se puede acceder a la ayuda en línea adicional desde el árbol DOC
en la vista de árbol, que se mostrará automáticamente (si el cambio de contexto automático está habilitado) cuando abra la ventana del navegador de documentación.

- Retroceder
  Alt+Flecha izq. Muestra la página abierta antes que la actual.

- Avanzar
  Alt+Flecha der. Abre la siguiente página en el historial del navegador, está disponible despúes de haber seleccionado "Retroceder".

- Buscar texto marcado
  F2 Intenta encontrar, en el índice de búsqueda, el texto seleccionado en la ventana de edición o en la ventana de navegador. Tras la búsqueda, se mostrará una página con los resultados, que le permite seleccionar la página de la ayuda que desea visitar. Al seleccionar la página, el navegador resaltará la expresión que se buscaba. Con la tecla F3 se puede ir a la siguiente ocurrencia de la expresión en la misma página, si aparece varias veces.

- Buscar ayuda sobre...
  Abre el diálogo "Buscar ayuda sobre...", que le permite buscar una expresión en la ayuda.

- Manual de usuario
  F1
  Muestra el índice del manual de usuario de KDevelop, que es el manual en que usted se encuentra ahora.

- Manual de programación
  Abre el índice del manual de programación de KDevelop.

- Sugerencia del día
  Abre el diálogo "Sugerencia del día", que le informará de algunas de las características de KDevelop.

- Página web de KDevelop
  Abre la página web de KDevelop en la ventana del navegador, si existe acceso a Internet.

- Notificar error
  ... Abre el diálogo de notificación de errores, desde el cual puede notificar directamente, por correo electrónico, de un error al equipo de KDevelop. Vea el apartado Notificando errores.

- Referencia
  de C/C++ Muestra el índice de la guía de referencia del lenguaje. Si la guía no está instalada, se mostrará una página de error informándole de donde puede conseguirla y como instalarla.

- Biblioteca Qt
  Muestra el índice de la documentación de la biblioteca Qt, incluida con su copia de la biblioteca Qt.

- Biblioteca del núcleo de KDE
  Muestra el índice de clases de la documentación de la biblioteca del núcleo de KDE.

- Biblioteca de la IGU de KDE
  Como la anterior, pero para la biblioteca de la IGU.

- Biblioteca KFile de KDE
  Como arriba, pero para la biblioteca KFile.

- Biblioteca HTML de KDE
  Como arriba, pero para la biblioteca HTML
  .

- Doc. de la API del Proyecto
  Muestra el índice de la documentación de las clases del proyecto.

- Manual de usuario del proyecto
  Abre el índice del manual de usuario del proyecto abierto. Puede utilizarse para comprobar los documentos HTML
  creados por KSgml2Html

- Acerca de KDevelop... Muestra el diálogo "Acerca de" de KDevelop que muestra el número de versión, el nombre de los autores y sus direcciones de correo electrónico, y el tipo de licencia de KDevelop.

### Elementos de la barra de herramientas

KDevelop ofrece un acceso más rápido a alguna de sus funciones por medio de la barra de herramientas. Hay dos barras: la estándar y la del navegador; en el editor de diálogos
sólo está disponible la barra estándar. Ambas pueden ser (des)habilitadas desde las entradas correspondientes del menú "Ver"; también pueden ser arrastradas fuera de la ventana y colocadas a los lados del área de trabajo.

#### La barra de herramientas
estándar

La barra de herramientas estándar ofrece un acceso rápido a las funciones más utilizadas para procesar y editar ficheros, además de para construir su aplicación. Los botones ejecutan los siguientes comandos, de izquierda a derecha:

- Abrir proyecto - muestra el diálogo de abrir proyecto

- Abrir fichero - muestra el diálogo de abrir fichero; si se mantiene apretado, muestra un menú desplegable que le permite seleccionar los ficheros fuente y de cabecera del proyecto abierto.

- Guardar fichero - guarda en disco el fichero abierto

- Imprimir fichero - abre el diálogo de impresión

- (separador)

- Deshacer - deshace la última acción

- Rehacer - rehace la última acción deshecha

- Cortar - corta el texto/control seleccionado

- Copiar - copia el texto/control seleccionado al portapapeles del sistema

- Paste - inserta los contenidos del portapapeles en la posición del cursor

- (separador)

- Compilar fichero
  - compila el fichero abierto en la ventana de C/C++. En el editor de diálogos el botón es reemplazado por el de "Generar ficheros".

- Ejecutar make - ejecuta make sobre el proyecto

- Reconstruir todo - reconstruye el proyecto

- Depurar - abre KDbg
  con el binario de la aplicación para depurarlo
  en la ventana de herramientas

- Ejecutar - ejecuta el binario objetivo de la aplicación

- Detener - cancela el proceso activo

- (separador)

- Editor de diálogos - salta al modo de edición de diálogos. En él, el botón es reemplazado por el de "Modo edición".

- Vista de árbol - (des)habilita la vista de árbol. En función de si está habilitada o no, el botón estará hundido o no.

- Vista de salida - (des)habilita la vista de salida. En función de si está habilitada o no, el botón estará hundido o no.

- (separador)

- ¿Qué es esto.....? - el cursor se transforma en una fecha de interrogación, permitiéndole obtener información sobre los componentes de la IGU
  de KDevelop.

#### La barra de herramientas
del navegador

La barra de herramientas del navegador
ofrece funciones útiles para la navegación de la documentación
y de ficheros. La barra de herramientas contiene:

- la lista desplegable de clases - le permite seleccionar una clase del proyecto abierto a la que ir.

- la lista desplegable de métodos - le permite seleccionar un método del proyecto abierto. Al seleccionarlo se mostrará la implementación
  del método.

- el botón del asistente de Clases - le transporta a la declaración
  del método seleccionado en ese momento. Si se mantiene pulsado aparece un menú, que le permite acceder a las herramientas para añadir clases, métodos y atributos, además de navegar por la clase y sus métodos.

- Retroceder - navega hacia atrás en el historial del navegador de documentación
  ; si se mantiene pulsado, aparece un desplegable desde el que se puede acceder a algúna de las últimas páginas visitadas.

- Avanzar - navega hacia delante en el historial del navegador de documentación
  ; si se mantiene pulsado, aparece un desplegable desde el que se puede acceder a alguna de las páginas desde las que se ha retrocedido.

- Detener - le dice al navegador que deje de cargar un fichero de la documentación

- Recargar - vuelve a cargar la página abierta

- Manual de usuario - abre la página principal del manual de usuario de KDevelop en el navegador

- Buscar el texto en la documentación - busca el texto seleccionado en la documentación; funciona en las ventanas de edición
  y en la del navegador

- Buscar ayuda sobre... - muestra el diálogo "Buscar ayuda sobre..." que le permite buscar una palabra en la documentación

### Atajos del teclado

Esta sección trata de los valores de los atajos de teclado, estándar o predefinidos, para su uso en KDevelop. Debería ver la sección Cambiando los atajos de teclado para obtener una descripción más detallada sobre como cambiar el valor asignado a cada comando.

#### Atajos para el procesado de texto

##### Movimientos del cursor

    una letra a la izquierda                         Flecha izquierda
    una letra a la derecha                           Flecha derecha
    una palabra a la izquierda                       Ctrl+Flecha izquierda
    una palabra a la derecha                         Ctrl+Flecha derecha
    una línea hacia arriba                           Flecha superior
    una línea hacia abajo                            Flecha inferior
    al comienzo de la línea                          Inicio
    al final de la línea                             Fin
    una página hacia arriba                          RePág
    una página hacia abajo                           AvPág
    al principio del fichero abierto                 Ctrl+RePág
    al final del fichero abierto                     Ctrl+AvPág

##### Selecciones de texto

    una letra a la izquierda                         Mayús+Flecha izquierda
    una letra a la derecha                           Mayús+Flecha derecha
    una palabra a la izquierda                       Ctrl+Mayús+Flecha izquierda
    una palabra a la derecha                         Ctrl+Mayús+Flecha derecha
    una línea hacia arriba                           Ctrl+Flecha superior
    una línea hacia abajo                            Ctrl+Flecha inferior
    al comienzo de la línea                          Ctrl+Inicio
    al final de la línea                             Ctrl+Fin
    una página hacia arriba                          Mayús+RePág
    una página hacia abajo                           Mayús+AvPág
    al principio del fichero abierto                 Ctrl+Mayús+RePág
    al final del fichero abierto                     Ctrl+Mayús+AvPág

##### Inserción y copia de texto, tabuladores

    (des)habilitar modo de inserción                 Insert
    copiar la selección al portapapeles              Ctrl+C, Ctrl+Insert
    insertar texto desde el portapapeles             Ctrl+V, Mayús+Insert
    borrar la línea seleccionada                     Ctrl+K
    insertar línea tras la seleccionada              Fin, después Intro
    insertar línea delante de la seleccionada        Inicio, después Intro
    deshacer paso de edición                         Ctrl+Z
    rehacer paso de edición                          Ctrl+Y
    tabulador                                        Tabulador

##### Borrado de texto

    borrar la letra a la izquierda del cursor        Retroceso
    borrar la letra a la derecha del cursor          Supr
    borrar el texto seleccionado                     Retroceso o Supr

##### Búsqueda de texto dentro del editor

    abrir diálogo de Ir a la línea...                Ctrl+G
    abrir diálogo de Buscar texto                    Ctrl+F
    repetir la última búsqueda                       F3
    abrir diálogo de Buscar y reemplazar             Ctrl+R

    abrir diálogo de Búsqueda en ficheros            Ctrl+Alt+F
    buscar el texto seleccionado con grep            Mayús+F2

    ir al siguiente error                            F4
    ir al error anterior                             Mayús+F4

##### Búsqueda de texto con el navegador de documentación

    buscar el texto seleccionado del editor en
    la documentación                                 F2
    buscar el texto seleccionado del navegador en
    la documentación                                 F2
    mostrar la siguiente aparición del texto en
    la misma página                                  F3

    buscar el texto seleccionado en el navegador
    dentro del proyecto                              Mayús+F2

##### Atajos del navegador

    página anterior                                  Alt+Flecha izquierda
    página siguiente                                 Alt+Flecha derecha

##### Administrando marcadores

    añadir marcador                                  Ctrl+Alt+A
    eliminar la lista de marcadores                  Ctrl+Alt+C

#### Atajos para los botónes de la barra de herramientas

    Botón "Abrir fichero"                           Ctrl+O
    Botón "Guardar fichero"                         Ctrl+S
    Botón "Imprimir fichero                         Ctrl+P
    Botón "Deshacer"                                Ctrl+Z
    Botón "Rehacer"                                 Ctrl+Y
    Botón "Cortar"                                  Ctrl+X
    Botón "Copiar"                                  Ctrl+C
    Botón "Pegar"                                   Ctrl+V
    Botón "Compilar fichero"                        Ctrl+F8
    Botón "Ejecutar make"                           F8
    Botón "Ejecutar"                                F9
    Botón "Ejecutar con argumentos"                 Alt+F9
    Botón "Editor de diálogos"                      Ctrl+D
    Botón "Retroceder"                              Alt+Flecha izquierda,
                                                    si el navegador está abierto
    Botón "Avanzar"                                 Alt+Flecha derecha,
                                                    si el navegador está abierto
    Botón "Buscar el texto seleccionado"            F2

#### Administración de ventanas

Para saltar a una ventana en concreto, pulse Alt más la letra subrayada en el título de la ventana, ej. para mostrar la ventana de herramientas
debería pulsar Alt+S

#### Atajos del proceso de compilación

    Compilar el fichero fuente abierto               Ctrl+F8
    Construir el objetivo del proyecto abierto       F8
    Ejecutar el objetivo tras construirlo            Ctrl+F9
    Ejecutar el objetivo con argumentos              Alt+F9
    Detener el proceso en ejecución                  F10

## El sistema de ayuda

Most of KDevelop's strength is accumulated in the Help System. It is also to be understood as an example of how to extend your own KDE application with a complete set of help functionality, and is, in part, already realized in the template applications, so KDE/Qt application framework
s generated with the asistente de aplicaciones
do already contain the basic functionality for statusbar help and documentation, that only has to be extended by the programmer. This section therefore introduces into the usage of the general help provided within the IDE as well as to show the usage of the Helpbrowser
, which, by intelligent use, will make it very easy to get the information you need for development.

### The "What's this ?"-Button and Quickhelp

Looking at KDevelop's top toolbar, you will see the "What's this?" button on the right end. By selecting the button, the cursor will change to a pointer with a question mark on the right, as is the same as the button in the toolbar. Now, you can select any visible part of the KDevelop user interface and click on it. This will result in displaying a help-window giving you a short description of the function this part gives you or what it can do for you. Included are the main view, the tree-views and the toolbars, for which every button help is provided. After another mouse click or a keyboard input, the What's this? help window disappears and your cursor is set to the last active position. Mind, that, if you place the mouse pointer over a button, it gets raised and after a short time, you will get a Quick-Tip-window, describing the function the button represents in the menubar; this will disappear if you move the mouse pointer away.

For user interaction dialogs, Quickhelp
provides you help windows with a short description of the selected item you want help for. These are accessed by a right-button mouse click to the item, a context-menu pops up that allows the selection of "Quick-Help". Selecting this will pop up the help window. This is always useful for dialogs where you can't see the action's purpose for as long as you are not familiar with KDevelop. Mind that most dialogs offer a Help-button which will show you the detailed context-help for the dialog's options within the provided online-manual in the help-browser.

### The Statusbar
Help

The statusbar of KDevelop offers you many functions that inform you about the current activity state as well as "status messages" offering a short description for commands.

#### Statusbar
Entries

The Statusbar
contains:

1. a general message field, most left. This is used for help messages and displays the current activity.

2. the progressbar, indicating the progress for actions that require a comparably long time to be finished, such as saving files and the scan-progress of the Class Browser. The progressbar only appears during those processes are executed.

3. an Insert/Overwrite indicator. It shows the editor
   mode for insert actions by INS for Insert mode and OVR for Overwrite mode. The mode can be changed by the INS-key on the keyboard.

4. a line counter, displaying the current line the cursor is placed.

5. a column counter, indicating the current column position of the cursor in a line.

#### Help Messages

The statusbar informs you about the action of menu entries if you select a menu within the menubar and select an action without executing it. Further, if you press on a toolbar icon, but without releasing the mousebutton, the help message for the button is displayed in the same way as for the menu entries. You can prevent the execution of the selected icon by moving the mousepointer away from the icon, still holding the button pressed. If the cursor is away, release the mousebutton.

For actions that are currently executed, KDevelop displays the action. This counts for processes running in the background such as saving files as well as for dialogs. If the process has exited such as a make-invocation, the statusbar display changes back to "Ready" state.

Also, when using the documentation browser
, the statusbar displays link urls for as long as the cursor is placed over an URL link in the browser window. Therefore, you can easily find out if the file is a local or a remote file only accessed by network connection.

The caption of the KDevelop Project Editor shows you the currently opened filename in the top window. This would be a HTML
file for the documentation browser
or a text file for the editing windows. Further, the Project name is displayed, so you have constant control where you are and what you're currently working at.

### Configuring the HTML
Browser

The browser included in KDevelop is completely HTML
-based, therefore you can specify the usual options like background and the like. You can set all preferences by the "Documentation Browser"-entry of the "Options"-menu. The configuration dialog
shows you two tabulators; the first for setting the font preferences, the second for color selection.

#### Font Preferences

The first option for the font display is the size. Available are small, medium and large. The best display for normal use is set to small by default. For the font selection you have to specify a standard font for normal text as it appears in HTML
documents; the fixed font is the one used for displaying e.g. code within the HTML
file.

#### Color Preferences

The color preferences dialog allows configuration of background, normal text, URL Link and followed link color. The colored buttons on the right are displaying the current settings; selecting a button will result in opening the "Select Color" dialog. There, you can specify the color either by choosing a System Color, a custom color, select the color by the multi-colored window or by setting the values directly. The middle contains a preview for the color selected.

Further, you can specify if the browser should underline links to easier detect them visually and if you like to use your own colors always independent of the page's preset ones. "Apply" will execute all changes, while "OK" will apply changes and close the dialog. "Cancel" leaves all settings untouched and exits the configuration.

### Utilizando el navegador de documentación

The documentation browser
allows quick and easy access to all manuals and documentations that are provided with KDevelop or generated automatically, including online-documentation for the KDE-libraries
and your project documentation. Plus, the Documentation Tree in the tree-view lets you customize a special "Others" folder that contains all individually added documentation.

#### Requerimientos

To make use of all features of the Helpbrowser
, you should have KDoc
and glimpse
installed. KDoc
will generate all kind of online class-documentation for the KDE-libraries
during the setup
process, but can also invoked by option in the Configuración del KDevelop. For the generation of an API
(Application Programming Interface) Documentation for your project's classes
, KDoc
is also used and called by the Project-menu, entry "Make API
-Doc". This will process all current header files of the project plus the addition of a cross-reference to the Qt and KDE-libraries
if those are available in the Helpbrowser
. For the generation of the project handbooks, you should have KSgml2Html
(provided with the KDE-SDK
) and, as a minimum, SGML
-tools installed on your system. To extend and change your project's online-documentation, you have to edit the documentation file for your project by selecting it in the RFV
. After saving your changes, call "Make User-Manual" from the Project-menu. In case SGML
tools detect formatting errors
, those will be displayed in the output
window allow you to find the error line directly. The program "glimpse
" is used to create a personal search-index for your documentation automatically. The index is generally build during the installation process, but can also be build with the Configuración de KDevelop dialog. For a description of the provided search functions see Using the Searchindex.

#### Documentación entregada

The KDevelop IDE comes with two sets of online-documentation, which can be accessed either via the Help-menu or by the Doc-tree in the Tree-View in the KDevelop folder. The first book provided is this online-handbook containing all information you need towards installation, configuration, available functionality and introduction to application development. The second book is The KDevelop Programming Handbook in it's first edition. The programming handbook covers most questions related to the creation and extension of projects that work with KDevelop. By tutorials the user gets an introduction to the rich facilities that applications created with the Qt- and/or KDE-libraries
have to offer as well as given a guideline for ensuring KDE
-compliance, which covers the same instructions given on the Internet site at \|\|. However, the programming handbook cannot replace any additional documentation available in printed or electronic form about the C++ programming language as well as about the usage of the Qt-library in certain terms.

The C/C++-Reference
used with KDevelop is currently only available on the KDevelop homepage at \|\|. On distributions the reference may be included, see your distribution installation program index for more information. It can be installed easily by downloading and copying the sourcefile to the main KDE-directory ($KDEDIR). There, you have to untar it as root with `tar zxvf c&&lowbar;;c++&&lowbar;;reference.tar.gz`, the reference will then be copied the documentation directory of KDevelop. For uninstalling the reference documentation you just have to delete the "reference" folder under ($KDEDIR)/share/doc/HTML/default/kdevelop/reference.

The Qt/KDE-libraries
documentation folder allows direct access to the HTML
-online documentation of your copy of the Qt-library. The path to the library documentation is usually automatically detected by the KDevelop installation program, but can be set manually in the Configuración de KDevelop dialog. Also, all available documentation for the KDE-libraries
are listed in order of the library name, so if you would use classes
of a certain library it is easy to determine the library type to be added to the Linker
settings in the project. Mind that the whole KDE-Library documentation is only accessible when generated by KDoc
- so this program, included in the KDE-SDK
, has to be installed before the documentation can be generated. As the installation program of KDevelop does this automatically, it should be installed before running the KDevelop Setup. If this is not the case and the documentation cannot be build, you are able to create it afterwards at any time with the Configuración de KDevelop dialog.

The documentation tree also contains the "Others" folder which is intended to contain all personally customized documentation as described below. Finally, the Doc-Tree allows access to the API
and the Manual for your current project.

#### Añadiendo documentación al navegador de la ayuda

To customize your Helpbrowser
, open the Tree-View and select the "DOC
" Tabulator. You will see an opened tree containing four folders. The "Others" folder is, by default, empty. On a right mousebutton click over this folder, a context menu opens that has an entry "Add Entry". Select this to open the Add Entry dialog where you have to enter two values: the upper one for the name that will be displayed for the documentation within the Doc-tree, and, below that, a file-entry line. Here, you have to enter the path and filename to the start page that will be opened by the selection of the entry later. You can enter the path and filename directly or by selection of the pushbutton on the right to open a file-chooser dialog. This allows a quick browsing on your system to the path for your start page. Mind that only HTML
-documentation can be selected, so only HTML
files are allowed to choose. Selecting OK will add the entry to the Doc-tree and is available directly.

#### Using the Searchindex

KDevelop includes a set of functions to help you search information within HTML
documentation. To use these features, your system needs to have the program "glimpse
", a free database generator, installed, which creates the search index
and executes searches within the documentation. To set up the index, see Configuración de KDevelop. The index is also automatically generated during the installation program.

The search functions are available through several ways which you can choose from:

1. in the editor
   , select the text you want to have help on or place the cursor in the word that you want to look for. Then press the right mouse button and select look up: "expression" This can also be done by selecting "Search Marked Text" from the Help-menu, the shortcut key F2 or by selecting the Search icon from the toolbar.

2. in the Documentation browser select the text you want to look up and press the right mouse button, select look up:"expression" or select "Search Marked Text" or the search icon as above.

3. if you want to search for a specific keyword, select "Search for Help on..." in the Help-menu or select the "Search for Help on..." icon from the toolbar, opening a search dialog where you can enter the expression you want to get information for.

Direct access to specific documentation is given by selecting the according icon in the "DOC
" -tree-view or by the Help-menu entries.

The Helpbrowser
also offers support for grep
to search for a selection within your current project, e.g you've opened the documentation page for the `KTMainWindow` class (KDEUI library) and you want to know where in your code `KTMainWindow` appears. Mark `KTMainWindow` and either select "Grep: KTMainWindow" or press Shift+F2. The "Search in Files" dialog opens with the results about your grep
search directly. Then you can choose an result line to jump to the according sourcecode.

## Trabajando con el editor

An important part of the integrated development environment is the editor
. You're using it for:

- creating, opening and saving source and project files

- editing source and project files

- writing your SGML
  documentation

- printing
  your project files

Generally, the editor
itself doesn't do much difference in comparison to other editors; especially as it is a build-in version of the popular KWrite, also known as the "Extended Editor". If you're familiar with that, you won't have any problems using it for managing your projects. In addition to normal editors, KDevelop contains a new printing
system, that is far more extended for use with sourcecodes- and you can choose between the printing
program you want to use.

This section gives you more information about how to handle your project files
and to make you more familiar with the editor
's functionality. A lot of Unix-hardliners would prefer using Emacs or XEmacs- they're fine with that. But it isn't necessary for easy programming, and especially for beginners, to work themselves into powerful editors which shall, in the result, only allow you to enter your code.

### Managing Project Files

The following sections describe how to create, save, open and close your project files
you need to edit- mind that this doesn't include translation files or pixmaps
. Those are recognized automatically and the according editing program like KTranslator
opens those files for you.

To give you an easy access to your files, KDevelop contains two easy-to-handle tree-views, similar to a filemanager, that recognize if you selected a file, and opens it in the according editor
window. The main view contains two windows that are used independently, but connected via the Project Editor, so you can do all menubar actions the same way. The intention behind this is that it allows you to handle two windows at the same time, although only one is visible. The C/C++ window thereby takes another task, which allows you to easily compile your sources one by one, so you can check the implementations without having to run a complete build-process over your project.

This can be done when having the C/C++ window on top. Select "Compile File
" from the Build-menu or press the according button in the toolbar. Your file gets saved and compiled, and you can control any errors
by the Compiler
output
in the output
window.

Within the IDE you can open as many text files as you like. All opened files are listed in the Window-menu, so you can switch between them by selecting the according filename from the menu. Further, the actual opened file is displayed with its name in the window frame of KDevelop.

#### Creating and Saving Files

To create a new file, choose "New" from the File-menu. This opens the "New File
" dialog, where you can specify the filename and type. Additionally, you have to set the destination directory as well if the file is added to the project or not. Finally, you can also use your header template for the project in case you want to add a new sourcefile without generating a new class by the Class-Generator.

After the file has been created, you can edit the new file as usual; if you have to switch between different files, you can always turn back to the file either via the file-trees or by the Window-menu.

For saving any changes, KDevelop offers a whole variety of options. The standard way would be to save the file by selecting "Save" or "Save As" from the File-menu or by the Save-button on the toolbar. For saving all changed files at once, you could as well select "Save all" from the File-menu.

Now, when working on a project, it is very annoying if something critical happens while you have done a lot of changes on your files; sometimes you will bite yourself that you have forgotten to save the changes. KDevelop takes care of this by offering "Autosaving", which is by default enabled and set to save all files in intervals of 5 minutes. To select another saving period or to disable this, see Configuración de KDevelop, where the setup
options are described.

Additionally, KDevelop takes care for all changes if you open another project or exit KDevelop. You will be asked for saving the changed files, where you also have the option to specify which one to save and which you want to stay unsaved. Further, when invoking any build-processes, your files get saved automatically, so you won't ever wonder why your application doesn't run the way you expected it to do after your changes to the source files. The only exception is the "Compile File
" command, which only saves the currently opened source file visible in the source editor
window.

#### Opening and Closing Files

To open a source file, you have a lot of options as well. One way could be, as the standard for editors, to select "Open" from the File-menu. You will be presented an "Open File" dialog, which allows you to choose the file you want to edit. Another, probably more frequently used way is to select the file from the LFV
, the Logical File Viewer, or the RFV
, the Real File Viewer (see \|\|). The advantage of the file trees is that they provide a quick visual access to your files, especially the LFV
, which only displays your project files
by their type, collected into folders. You can as well configure the LFV
towards sorting your files in another manner by a right mouse click on the tree. Select "New Group" from the popup-menu, and you can configure a new group, or select "Edit Group" to install new file filters by specifying the group's file extensions, separated by commas.

The standard file groups for a project generated by asistente de aplicaciones
are the Headers, Sources, GNU and Others. Additionally, after adding a translation file, KDevelop adds a folder "Translations", containing your *.po files.

To close files, select the file to close from the Window-menu, which loads the opened file into the front editor
. Then select "Close" from the File-menu. If your file has been changed, you will be asked to save it. When closing a project, all currently opened files will be checked for changes and you will be asked for saving as well.

### Navigating within Files

The following gives you a general guideline how to locate certain positions within your files for a quicker access.

How to find a certain line in a file

1. Select "Goto Line" in the "View"-menu or press Ctrl+G. The dialogfield "Goto Line" appears.

2. Insert the linenumber you want to go to.

3. Press OK.

How to set a bookmark

1. Set the cursor to the line you want to access via a bookmark

2. Select "Set Bookmark" from the "Bookmarks"-menu.

3. A popup-menu opens that allows you to select the bookmark number you want to set for the new bookmark.

4. Select the bookmark number.

Another way to set bookmarks
would be to select "Add Bookmark" from the "Bookmarks"-menu. This sets a bookmark to the current line and appends it to the bookmarks
-list. The documentation browser
also offers setting a bookmark to the current page by a context menu entry "Add Bookmark".

How to delete bookmarks

The bookmarks
are set for each editing window separately- mind that your bookmarks
aren't connected to a certain file you set the bookmark for. To delete all bookmarks, select "Delete Bookmarks" from the "Bookmarks"-menu. This deletes the bookmarks
for the window actually on top, either the Header window, the C++ window or the browser window.

How to go to a bookmarked line

1. Select the "Bookmarks"-menu and open the popup menu containing the bookmarks
   for the window containing the bookmark you want to view; either the C++-Window or the Header-Window entry.

2. Select the bookmarked line.

Selecting a bookmark for the browser window will open the browser and loads the page.

### Working with Keyboard Shortcuts

For using the editor
, you should make yourself comfortable with some keyboard shortcuts
that make it easier to position the cursor and edit the file. The complete shortcut reference is also listed in section Descripción general.

    one letter to the left                           Left Arrow
    one letter to the right                          Right Arrow
    one word to the left                             Ctrl+Left Arrow
    one word to the right                            Ctrl+Right Arrow
    one line upwards                                 Up Arrow
    one line downwards                               Down Arrow
    to the beginning of the line                     Inicio
    to the end of the line                           END
    one page up                                      RePág
    one page down                                    AvPág
    to the beginning of the current file             Ctrl+RePág
    to the end of the current file                   Ctrl+AvPág
    one letter to the left                           Mayús+Left Arrow
    one letter to the right                          Mayús+Right Arrow
    one word to the left                             Ctrl+Mayús+Left Arrow
    one word to the right                            Ctrl+Mayús+Right Arrow
    one line upwards                                 Ctrl+Up
    one line downwards                               Ctrl+Down
    to the beginning of the current line             Ctrl+Inicio
    to the end of the current line                   Ctrl+END
    one page up                                      Mayús+RePág
    one page down                                    Mayús+AvPág
    to the beginning of the current file             Ctrl+Mayús+RePág
    to the end of the current file                   Ctrl+Mayús+AvPág
    en/disable insertmode                            INS
    copy selection to the clipboard                  Ctrl+C, Ctrl+INS
    insert text from the clipboard                   Ctrl+V, Mayús+INS
    delete current line                              Ctrl+K
    insert line after current line                   END, then Intro
    insert line before current line                  Inicio, then Intro
    undo editing step                                Ctrl+Z
    redo an undo step                                Ctrl+Y
    tabulator                                        TAB
    delete letter left of cursor position            Backspace
    delete letter right of cursor position           Delete
    delete selected text                             Select text, then Backspace

### Edit Windows Settings

The editor
inside KDevelop can be configured towards special editing needs with a global effect on all editing windows. Thereby you can set the color modes, highlighting colors (also configurable in reference to the programming language of the file) and automatic text settings like tab-with and selection modes. The following describes how to set these options by the configuration dialogs provided in the "Options"-menu.

#### General Settings

The editor
's general settings can be configured with the "Editor" entry in the "Options"-menu. Select the according values and press OK after you finished with your configuration.

##### Edit Options

Auto Indent:

  this sets the editor to place the cursor below the first literal when a new line is entered.

Backspace Indent:

  this option sets the cursor below the first literal of the line above when backspace is pressed.

Word Wrap:

  words are taken into the next line after the column set in "Wrap Words At:"

Replace Tabs:

  tabulators in the current text are replaced with tabulators of the "Tab Width:" value

Remove Trailing Spaces:

  removes trailing spaces

Wrap Cursor:

  sets the cursor to the end of the last line when backspace enters the beginning of a line

Auto Brackets:

  creates a closing bracket in front of the cursor when a bracket (any kind) is opened.

##### Select Options

Persistent Selections:

  selections made stay marked after setting the cursor to a different place

Multiple Selections:

  allows multiple independent selections within the text

Vertical Selections:

  allows vertical selections of text

Delete On Input:

  deletes a selection when writing in the selection.

Toggle Old:

  allows only one selection. A selection made gets deselected when another selection is made.

Wrap Words At:

  sets the maximum columns that a line can have. The word that contains a letter that reaches over this value will be automatically broken into the next line.

#### Colors

For changing the editor
's general appearance, you can define a set of colors that the editor uses by selecting "Editor Colors" from the "Options"-menu. You can configure colors for:

- background: the editor's background

- text background: the background of displayed text

- selected: the color of selected text

- found: the color of text found by a search via the menu "Edit"-"Search", "Repeat search" and "Replace".

- selected + found: the color of text selected to search for and found

#### Syntax Highlighting

The syntax-highlighting mode of KDevelop's editor
can be configured by two dialogs; first you can set default colors for syntax-highlighting by the "Editor Defaults" entry in the "Options"-menu. There, you can set colors and fonts as well as the fontsize for e.g. keywords. Select the default item and set all needed options.

The second configuration dialog
is accessed by the "Syntax-Highlighting" entry in the "Options"-menu. This allows you to set the file filters for the programming language, e.g. *.cpp, *.h for C++. Then select the item that you want to configure. If you wish to use the default values you've set in the "Editor Defaults" dialog, select the "default" checkboxes in the Item-style and Item-Font sections. This reads the default settings for the selected item. After pressing OK, your new values will be enabled and used by the editor
.

### Searching and Replacing

#### Single File Search

How to find one or more characters in the actual editing window

1. Select "Search" from the "Edit"-menu. This opens the search dialog.

2. Specify the expression to search for in the edit field. The drop-down menu offers selecting a previous search expression.

3. Select additional options like "Whole Words only"

4. Press OK.

To repeat searching for an expression entered in the search dialog, press F3.

#### Searching over Several Files

As the search function only is referencing searches over a single file that is currently visible, you're limited to this. But often you want to search for the same expression overall your project. Therefore, KDevelop contains a `grep
`-dialog, which lets you search over all files that you specify either by setting the directory to start the search from and/or by mime-type. Specifying the exact directory and the mime-type will therefore reduce the time that KDevelop needs to read your files and display the results. To start a search over several files, select "Search in files..." from the "Edit"-menu. The search dialog opens and lets you enter:

- The expression to search for (the pattern)

- The template used for the search

- The mime-type of files to search in

- The directory to start form

- If the search is recursive over all included subdirectories

By default, the grep
-dialog is set to start at your project directory and works recursively over implementation
and header files.

You can even extend your search pattern by using the following options:

1. . Match any character

2. &ˆ; Match the beginning of a line

3. $ Match the end of a line

4. \< Match the beginning of a word

5. \> Match the end of a word

For a repeating search, you can also use the available operators:

1. ? The preceding item matches less than once

2. * The preceding item is matched zero or more times

3. + The preceding item is matched once or more times

4. &&lcub;; n &&rcub;; The preceding item is matched exactly n times

5. &&lcub;; n,&&rcub;; The preceding item is matched n or more times

6. &&lcub;;,n &&rcub;; The preceding item matches less than n times

7. &&lcub;;n,m&&rcub;; The preceding item matches at least n times but less than m times

Backreferences to bracketed subexpressions are also available by the notation \n.

After specifying your search, press "Search". The results are then displayed in the result-window. To jump to a file and line number, select the resultline and press Intro or double click the result. The editor will automatically open the according file and place the cursor to the line of the result. This allows a complete specification for any search action and give out exact results.

KDevelop offers also some more specialized functionality to use grep
within the editor
s and the browser. Select the expression you want to search for in either of the windows and press Mayús+F2 or select "grep
:&<;your&&lowbar;;expression&>;" from the right button popup menu. This will ask grep
to search for the selection in your project directory's files and will show the results immediately. Switching to the result works as described above. From within the editor window, it lasts to place the cursor over a word and start searching; the word under the cursor will be the search pattern.

#### Searching within Documentation

While working on a project, you often need to have information about the parameters of member functions
you want to use- most often you remember the function's name that matches your needs, but the parameters are a very hard thing to keep in mind. Therefore, and for other purposes that may occur, KDevelop contains a search functionality that combines searching expressions that appear in your files with the documentation browser
. To make use of this search functionality, you should have set up the documentation browser
correctly and created the search database. For invoking a search through the documentation, do the following:

1. place your cursor at the word you want to search or mark an expression

2. select "Search Marked Text" from the Help-menu
   or press the right mouse button to open the context menu; then select "Look Up: "expression".

3. after the search result
   page is displayed in the documentation browser
   , select the page that you think could contain the information you need.

4. the selected documentation page is displayed and your search result
   is marked. To display the next result within the same documentation page, press F3.

This allows you to easily find the information you need. For using the results, the documentation browser
allows marking a selection and copying it to the clipboard. Then return to the file you're editing and select "Paste" from the "Edit"-menu.

For a full description on how to use the Documentation, see Using the Searchindex.

#### Replacing Text

For replacing an expression, select "Search and Replace" from the "Edit"-menu. The "Search and Replace"-dialog lets you specify the expression to be replaced as well as the replacement expression. Then press OK. The first expression which is found will be marked, so you can see where the expression is and in which context. Then you can specify by a dialog if the expression shall be replaced or not. When the search is finished by reaching the end of the current file, you will be asked if you want to start the search again from the beginning. If you're finished, select "Cancel".

### Printing

As KDevelop is designed to give developers the best access to files and information to reduce development cycles, it also contains a new printing
utility which makes use of two common printing
programs available for Unix-Systems, a2ps
(ASCII-to-Postscript) and enscript
. Besides these, you can also print by directly using lpr (the lineprinter device). As using a2ps
or enscript
offers the most options towards printing
, you should install either one of these on your system; both programs are usually shipped with distributions, so you shouldn't have any problem to get them. But before printing
, you should have a look at the available configuration dialog
s to prepare the output
according to your needs. The following section describes how to configure KDevelop for printing
files.

#### Configuring the Printer

The printing
programs can both be configured by selecting "Print" from the "File"-menu
; on the printing
dialog, select the program by the drop-down-menu in the left upper corner. Then press the "Options" button on the right. This opens the configuration for the selected program that will be used. Another way to configure the programs are selecting "Printer Configuration..." from the "Options"-menu; then select "a2ps
" or "enscript
".

##### The a2ps
Configuration Options

###### Printing

- header: adds a header frame to the page

- filename: if checked, the header frame will contain the filename as its text

- login: adds the User ID to the right upper corner of the page

- borders: adds frame borders to the text page

- Date & Time: adds the printing
  date and time

- align files: prints out files on the same page, available for two-page printing
  mode

- set TAB size: sets the TAB size for printing
  TABs

- headertext: available, if filename is deselected and allows inserting another text to the header frame

- fontsize: sets the fontsize for the text. The default fontsize is 9

###### Textprinting

- cut lines: cuts the line's contents if the line is too large to be printed. If deselected, lines will be broken.

- interpret TAB, BS and FF: interpret TAB, Backspace and FastForward characters.

- replace non-printing
  character by space: if the file contains non-printable characters, those will be replaced by space characters.

- print non-ASCII character as ISO-Latin 1: prints characters not included in the ASCII format in ISO-Latin 1 mode output

- bold font: prints the whole text in bold font mode.

###### Numbering

- numbering lines: numbers all lines top-down if enabled

- numbering pages: allows selecting page-numbering mode by:

  - file single: numbers each file's pages beginning with 1

  - file together: appends all following pages after the first for page numbering

- lines per page: sets the maximum lines per page to be printed.

##### The enscript
Configuration Options

###### Header

- Fancy Header: adds a fancy header

- Header Text: enables adding a header text

  - text: sets the text's contents

  - position: sets the text's position to left, center or right

- Login: add the UserID to the header

  - login: enables adding UserID

  - position: sets the position for the UserID

- Filename: add the filename to the header

  - Size of filename: add filename as full or short, meaning full path or filename only

  - Position: sets the position for the filename

- Hostname: add the hostname to the header

  - hostname: enables adding hostname

  - size of hostname: sets the size for hostname

  - Position: sets the position for hostname

###### Date & Time

- Current Date: include the current date

  - current date: enables current date adding

  - position: sets the position for the date entry

  - format: sets the date format

- Modification Date: include the last modification date

  - modification date: enables modification date adding

  - position: sets the position for modification date entry

  - format: sets the date format

- Current Time: include current time

  - current time: enables current time adding

  - AM/PM: use AM/PM or 24h format

  - Position: sets the position for the time entry

  - Format: sets the time format

- Modification Time: include the last modification time

  - modification time: enables adding modification time

  - AMPM:/ use AM/PM or 24h format

  - Position: sets the position for the time entry

  - Format: sets the time format

###### Layout

- Numbering & Border:

  - numbering lines: adds line numbers to the document for printing

  - borders: adds a border to the pages for printing

  - numbering pages: numbers pages for printing

  - align files: appends files for page numbering

  - lines per page: the maximum value for lines per page

- Format and TAB:

  - set TAB size: sets the TAB size for interpreting TABs

  - font for header: sets the font used for the header text

  - font for body: sets the font for the body text (file contents)

- Textprinting
  :

  - cut lines: cuts the lines if too large. If unchecked, lines are broken

  - replace non-printing
    character by space: replaces characters that the printing
    charset doesn't support by space characters

- Other Options:

  - table of contents: adds a table of contents page that contains information about printed files, page numbers etc.

  - Highlight bars:

    - highlight bars: highlights rows for printing

    - cycle fo change: sets the number of rows to change highlight style

  - Wrapped line:

    - mark wrapped lines: lines that are broken get marked for printing

    - value for wrapped line: the preset value for the new line the line is broken into.

###### Underlay

- Text: sets the text to underlay

- Position: sets the position of underlay text

- Font: sets the font used for the underlay

- Angle: sets the angle for the underlay text

- Gray scaling: sets the grayscaling for the underlay text

- Style: sets the underlay text to be printed as outlined or filled

#### The Printing Dialog

##### Direct Printing Options

- Program: sets the printing
  program to be used for printing
  : a2ps
  , enscript
  or lpr

- Printer: sets the printer to be used for printing

- Output location: for printing
  into a file, select the output
  location

- Orientation: sets the orientation for printing
  , either landscape or portrait

- Copy: sets the amount of copies to be made per page

- Paper Size: sets the paper size to be used

- Output Format: for using enscript
  as printing
  program, you can choose between postscript or html printing

- Default Printsettings: sets the default settings to use for printing

- Outprinting
  :

  - Page Printing: sets one or two pages on one sheet

  - Pages: select all,odd or even for using enscript

  - Pretty Print:

    - pretty-print: enables pretty-print mode for enscript

    - color: use color printing

    - Pretty Print Mode: sets the printing
      mode dependent on your file format

##### File Selection

The file selection dialog is accessed by the "Files" button on the printing
dialog. The file selection allows specifying which files to print out by certain criteria:

- File Selection:

  - current: the currently opened file visible in the editing window

  - all in project: all files included in the project currently opened

  - self chosen files: allows choosing the files to be printed by file-selection

  - all cpp files: prints out all source files of the project

  - all headers: prints out all header files of the project

  - changed files: allows specifying files that are changed in a timespan:

- Changed Files:

  - Between: specifies all files changed after:

    - Date: the date the files were changed

    - Time: the time the files were changed

  - And: specifies all files changed before:

    - Date: the date the files were changed

    - Time: the time the files were changed

- Self Chosen Files: available if self chosen files is selected (see above)

  - add: press this to add a file selected for printing
    in the lineedit field left

  - delete: deletes a selected file from the printing
    list

  - clear: clears the printing
    list

##### Print Preview

Print Preview is available for you to control how the output
will look like. Therefore, KDevelop uses the program ghostview or kghostview. When the preview-button was pressed on either printing
dialog, you will be presented a template output
that shows you the effect of the currently set options.

## Proyectos

### Projecttypes

#### Programas

KDevelop creates a projectfile with the .kdevprj ending. This file contains all your project information, so be careful not to delete it. It is stored in the project's base directory and has to be opened to load the project. The projectfile keeps all information for your files like the file properties, install path, distribution status and compiler options
(CXXFLAGS). Setting file properties allows you to keep track of where the files should go.

With asistente de aplicaciones
, you can create a new application project according to your choice of application type. For now, KAppWizard
generates four kinds of frame applications, as:

- a single document interface (SDI) KDE
  -application including a menubar, a toolbar and a statusbar. It contains basic control resource management to allow extending the frame application into a unique KDE
  application. The application frame also contains statusbar help messages as known from commercial products just like KDevelop itself. From the programmer's point of view, it is based on three application-specific classes
  leaning on the MVC-concept (Model-View-Controller). Technically, the base classes
  may not be viewed that way, but it's construction is at least created most logical to create applications with a GUI
  .

- a KDE
  -based application frame window. This application type offers most flexibility to those wanting to develop their program from scratch, but can also be used as a basis for developing wizard applications or modules.

- a Qt-only based program framework. For those programmers who want to use the Qt-library
  as the GUI
  interface alone, we tried to offer you a smart framework to support your application development. As Qt programming is fully supported, you should have no problems to create a full-functional application by using Qt only.

- a C++ program framework. This application type is intended for those wanting to write a terminal based C++ program. Just remove the "Hello World" line in main() and construct your classes
  the same way with KDevelop as for KDE
  applications.

- a C program framework for C programmers. This is as well a terminal based application but only uses the C compiler.

Additionally, KDevelop enables you to work with already existing projects. Those can have any options set by the programmer himself by configure and Makefiles. As far as the execution and the build-process is concerned, the current state only allows the same structure as for the other baseclasses. Create a custom project with the application wizard and add your files to the project to allow scanning by the classbrowser.

To ensure the build process, your custom project has to have all sources in a subdirectory matching the lowercase name of your project; the execution of the binary is also restricted to this lowercase project name.

Mind that KDevelop does not write any information into Makefiles or configuration files. You are responsible for any project behavior and build settings yourself.

#### Libraries

A general project-type to create libraries is not available at the moment. Anyway, building libraries is not impossible with KDevelop. Here are a few guidelines and workarounds:

- Whenever your project subdirectory gets another subdirectory that contains source files, KDevelop will build a static library of these. That means static libraries are already supported by automatic creation in order to sort project sourcefiles. Mind that the static library is part of the binary later and won't get installed.

- to create a shared library, you have the option to create another project subdirectory. The sourcefiles that are created in this subdirectory are included in the project and are therefore available in the classviewer as root classes. To create the shared library, the KDevelop Programming Handbook offers a Makefile.am template. If the subdirectory's Makefile is added to the configure.in script, you only have to run "Autoconf and automake" and "Configure" to create the Makefiles. The build instead is only possible from a make-command within the subdirectory, as KDevelop invokes the build from within the original project subdirectory. Another possibility to create shared libraries is changing the Makefile.am of the original project-subdirectory according to the template in the Programming Handbook by hand following the rules for project modifications explained in chapter Project Hacking.

- for installing a shared library, you have to watch the KDE-File-system Standard as explained in The KDevelop Programming Handbook

#### Multiple Targets

For some projects, the facilities of KDevelop at it's current state will not last. Those are projects that include multiple targets like packages containing several applications. As commands like "Execute" require that only one target is build by the developer, those types of projects are only supported in the way that you have to write your own entries to the Makefile.am
's and creating your directories for the additional libraries or binaries to build. Nevertheless, a build-process always invokes your make-program independent from what actually the targets are; so these functions still can be used (with the restriction that the build is invoked from the main project subdirectory).

Another way to still work with this type and to still have access to the binaries themselves are creating empty projects and move their subdirectories in conjunction with the project files
to the directory containing all sources later. Then you could load each target independently by its project file; this also allows executing and debugging
the target.

Multiple binaries or libraries within the main project subdirectory are possible with following the rules explained in section Project Hacking and the following guidelines for editing the main project's subdirectory Makefile.am (all modifications outside the KDevelop write area):

- add your target to the bin&&lowbar;;PROGRAMS if it is an executable

- add your library declaration line if it is a shared library

- add the same declarations like the original project binary is build:

  - newtarget&&lowbar;;METASOURCES

  - newtarget&&lowbar;;LD&&lowbar;;FLAGS

  - DISTCLEANFILES

  - copy the messages: entry for the original binary and replace target&&lowbar;;SOURCES with newtarget&&lowbar;;SOURCES, target.pot with newtarget.pot

- add your sources like the KDevelop write area contains outside the write area for your binary or library

- for installing static libraries, create the library with KDevelop's auto-creation inside subdirectories. Then modify the Makefile.am outside the write area according to the needed settings

### New Project
s

The KDevelop Application Wizard allows the creation of four different types of projects, constructing a framework for each. All projects use the GNU standard development tools as described in the requirements section of this handbook. For KDE
applications, the wizard offers two different frameworks, the KDE
-Application, providing a complete application with base classes
for document type, view and application. This includes the creation of a menubar, toolbar and statusbar, the mainwindow inherits the KTMainWindow class. The KDE
-Mini-Application only gives a view which is empty. This type of project can be used for the creation of small desktop tools or other simple applications without too much change on the existing code provided by the framework. A Qt-Application offers the creation of a Qt-only program if you wish no dependencies towards the KDE-libraries
for end-users. The Qt-Application also is created by using tree base classes
like the KDE-standard-Application and provides a menubar, toolbar and statusbar.

The C++ -Application type offers a framework for creating commandline applications. It is ready to run and by default displays "Hello World" as the only action. This may be useful for C++ learners who would like to program applications without using a GUI
first or for those working on commandline programs written in C++ or C. C programmers can also take advantage of the C-only project, which requires any C-compiler at the minimum.

The wizard asks for your project name, version and the location where the project directory will be build. Further, your Name and Email address are asked for inserting them in header and cpp templates on top of your source files as well as for entries in the *.lsm file.

### Opening and Closing of Projects

KDevelop is by default configured to open the last project loaded when starting. This allows a fast start, but you may want to change that to just start the IDE without any project. To prevent the default behavior, disable the "Load last project" option in the Configuración de KDevelop dialog.

To open another project, select "Open" from the "Project" menu or press the "Open Project" button on the toolbar. In case you've got another project currently open, this will be closed. If your current project then contains files that aren't saved, you are asked to save all changed files. Thereby, you can select which file to save and which you want to close without saving, or to save all at once.

Then you get an "Open Project" dialog, where you can change to the directory containing the project file to be loaded. KDevelop project files
have the *.kdevprj mime-type which is also displayed by a project icon. Select the project file and press "Open". When loading a project, the Class Browser scans all files and builds the initial classtree, so you can start working on the project by using the Class Browser directly.

Another comfortable way to open a project is to select the project file in the KFM, the KDE
File Manager. This will start KDevelop with loading the selected project file. You could as well open a project by commandline, entering `kdevelop projectname.kdevprj`.

When closing KDevelop, your project file will be saved automatically and the IDE detects if you have changed any project files. Then you will be asked to save any changes before exiting. The available options for closing are the same than for closing a project before loading another.

### Editing a Project

After you created a new project with the KAppWizard
, the usual task is to extend the project by editing the already created sources and adding classes
, pixmaps
, pictures and whatelse you project needs. Now, editing a project means that you can change the default project after its generation by menus and dialogs according to your needs. The next section therefore describes how you can add existing files and classes
as well as creating new files. This is needed for building your project, but this won't help you for the installation process by the end-user. Therefore, section Setting Project File Options describes how to set File Properties especially for additional files that you want make to install, like documentation or pixmaps
. Another part in project maintaining is adding translations for applications that support internationalization, which is described in Adding Translations.

Extending the Project Documentation covers questions on how to create a good set of documentation for online help enabling the end-user to help himself in case of troubles as well as how to use your product.

Finally, Project Hacking describes how you can eventually work around the KDevelop project management in special cases.

#### Adding and Removing Files and Classes

Adding a new file is often used when you think that you should separate your class implementation
file into several ones. Then you need to create an new file which will contain the part of the class implementation
you want to move. You can do this by choosing "New" from the "File"-menu
, opening the "New File
" dialog. This enables you to specify the file-type, name and the location. When entering the filename, KDevelop automatically enters the extension for you, but you can as well change the extensions towards your own preferences. Further, you can include the header template for sourcefiles, so you don't have to copy this into your new file yourself. Also, you can decide, if the file is included in the project or not. Mind that this doesn't cover the installation destination; this has to be configured later by setting the file preferences.

After the new file has been created, the project file will be updated as well as the according Makefile.am
's. To add a complete class to your project, you can construct a new class with the Classgenerator which is invoked by "New Class
" from the Project-menu.

In case you have an existing project and you want to add certain classes
that you want to re-use in your project, select "Add File(s) to Project..." from the "Project"-menu
. Select "Add existing files", which will open a dialog to let you specify which files will be added to the project and the destination directory. Mind that the files will be copied into the specified directory and added to the project. You should call "Make" after adding sources; then your added files will be included in the build-process. In case you want to add e.g. pixmaps
that have to be installed by the end-user, you should update the File Properties for the added file and specify the installation path (see Setting Project File Options

To add a file to the project that is already in the project directory, go to the RFV
, where all project-included files are displayed by their project status by a red ! over the file icon. Select the file you want to add to the project (which has a normal file icon) and press the right mouse button to get the popup-menu. Then select "Add".

Files can also be removed from your project. This could be needed in cases where you don't want to use pre-generated files that are already given by the KAppWizard
. To remove a file, you have additionally the option between removing a file from the project or delete it completely. To remove a file from the project, select the file in the LFV
or the RFV
, press the right mouse button and select "remove". To delete a file, select "delete physically".

#### Setting Project File Options

The file properties dialog can be accessed via the project menu or within the LFV
by a right mouseclick. It shows the project files in groups as they are sorted in the LFV
and displays the file properties like file size, file type and if the file is included in the project as well as the installation path if the file is going to be installed by the end-user's make install command. It is important for documentation files as well as pixmaps
to specify the location where the files should go when the project is build and installed by end users, so you have to set up those locations. For standard KDE
location macros you should look in your Makefile.am
where the location macros are specified.

#### Adding Translations

As KDE
allows configuring your desktop and the behavior of your applications, you also have the option to choose the language that your application uses, in regards of the use of online-documentation as well as the application's look. For documentation files, this seems a trivial task. You would add a subdirectory labeled by the desired language, e.g. `de` for German, to the `docs` directory of your project and copy the english documentation into that directory. Then you would generate the documentation and set all project file options for the installation directories. Then you could start translating the SGML
file to your desired language and regenerate the documentation; then you're done. For the application, this seems a bit more difficult for the programmer. Now, we want to explain how to enable internationalization support for your application and how to add the languages you want to support.

First, you have to enclose all visible strings of your application that appear in bars or dialogs with the `i18n
()` macro. This macro is a replacement for the function `klocale->translate()` of the KLocale class and much easier to use. As this macro is declared in the `kapp.h` include file, you have to add `&&num;;include &<;kapp.h&>;` to the source file or the class declaration
file of the class that makes use of the macro. Also it should be mentioned, that although `i18n
()` is a macro and therefore you could think about using the original function, this won't work because the strings that are set up for translation have to be read out of the sources and get stored in the application's translation file (&<;YourApp&>;.pot in the /po subdirectory). This task is done by the program xgettext, and to do this, you would enter `make messages
` in your project directory containing the sources. As xgettext depends on the `i18n
()` macro, the original function won't do the job.

For translations themselves, you first have to create the message file containing all strings that are used in your sources with the `i18n
()` macro. This can be done by choosing "Make messages
and merge" from the Build-menu. Then you have to add the languages that your application wants to support. Therefore, select "Add Translation File" from the Project-menu. This opens a language selection dialog. Select the language and press OK. This will build the ASCII file containing entries for the filename of the string and the line where the original string is placed. Then you will see a `msgid` line containing the string to translate, followed by `msgstr`. The msgstr line is mostly empty except for the translations already provided by the KDE-libraries
. Those have to be filled with the according translations of your language.

You could think about writing the translations by hand, which can also be done. But the KDE-SDK
offers the use of the program KTranslator
, which ready the already existing files from other applications installed on the system, so you can reuse already translated strings to support your language.

To access KTranslator
, the easiest way is selecting a &<;language&>;.po file in the /po directory either in the LFV
or in the RFV
. This opens KTranslator
and lets you do the translating easily. Mind that you have to set up KTranslator
's properties yourself to include the author name and the language as well as the destination file. KTranslator
by default only opens your translation file.

For all translation files, `make
` uses the program `msgfmt` to format your message files to use with the binary, but you don't have to take care for that, as well as specifying the destination directory for installing the translation files; this is all done by KDevelop automatically.

For more information about internationalization support, see \|\|; a lot of people are doing translations for you to support their language. You will find a list of email-addresses of the translators you could write to and who will help you with this. Also read El editor de diálogos and The KDevelop Programming Handbook where questions about internationalization are covered again.

#### Extending the Project Documentation

All projects created with KDevelop contain a pre-configured documentation, which already contains standard chapters for installation, project name and version as well as the author name and email-address. As KDevelop uses SGML
-templates, it's very easy to extend the documentation to a full descriptive helpsystem. The only thing you have to do is editing the SGML
file, placed in docs/en as index.sgml. The reference documentation included with your sgml-tools package can be added to the Helpbrowser
and allow you direct access to special tags as well as a short description of how to extend the documentation. SGML
has a lot of advantages, whereas KDE
makes wide use by this documentation type with the additional KSgml2Html
tool. This creates the typical KDE
-style documentation and makes it look nicer. Anyway, the sgmltools alone are enough to produce a html output
that is already included in your application. To create the documents using KSgml2Html
, install the tool and run "Make User-Manual" from the Build-menu. The Documentation Browser allows a direct controlling of the output
by selecting "Project User-Manual" from the Help-menu or the according icon in the DOC
-tree. Then you can browse the documentation online in KDevelop and have a better overview by the output
over errors
that result in missing tags.

Now, while extending the documentation, you can't avoid that additional files are produced that have to be included into the project as each `sect`-tag creates a new HTML
file. The output
generated by the KAppWizard
is already included in the project, so you don't have to care for their installation path. What you have to watch out for is any index-xx.html file, where xx is higher than 6 (as the first six pages are already included in the project). After generating the documentation, switch to the RFV
and browse to your documentation directory. Press the right mouse button over the files to add and select "Add". Further, KSgml2Html
adds the KDE
logo to the documentation directory. This file, `logotp3.gif`, has to be added to the project as well. Then you have to select the "File Properties" either from the Project menu or by the popup menu in the file-viewers. The easiest way to set the installation path is to select a documentation file already set up for installation such as `index.html`. You see that `Install` is checked and the Installdir+filename already contains the destination. Mark the Installdir and enter Ctrl+C to copy the installation path to the clipboard. Then select the file you want to specify for installation. Enable `Install`, this will enable the installdir-entry field, already containing the filename. Place the cursor in front of the filename and enter Ctrl+V to insert the clipboard contents (which was the installation path copied before). This is the fastest way to specify the installation path. For more options about specifying installation destinations, see The KDevelop Programming Handbook.

#### Project Hacking

When working with a project, you should never edit the project file by hand. This will prevent KDevelop from loading your project correctly under certain circumstances, as well as changes will not result in updating the Makefile
s. To change any settings for your project, you have to use the given menu entries like e.g. for adding files or setting file properties. For experts that are not comfortable with certain options for e.g. the Linker
or need additional project configuration, you should work yourself into the Makefile.am
macros and add all changes in the Makefile.am
's after the section separated with the entry "KDevelop write area". As the GNU-tools are using the commands at the end of all macro files, you can overwrite KDevelop's settings with this. Mind that this will prevent using KDevelop for any changes related to project configuration.

### Compiler and Linker
Flags for Projects

Each new project contains all needed options for the Compiler
and Linker
as well as general settings. By default, your project is set to use debugging
by the -g flag, and warnings
are set to the standard, -Wall. This ensures you can debug your application and detect constructions that may cause program errors
. For some applications, you would need additional Compiler
or Linker
flags, especially if you're using libraries that are not currently included by the Linker
. Then you need to update the project by configuring the correct settings with the Project Options dialog. See Generación de ejecutables for more information how and where to set Compiler Options, Warnings and Linker
Options.

### External Projects

Existing projects can be converted to KDevelop projects by selecting "New" from the project menu. The following dialog creates an empty project file with your project name, version and type information as well as your name and email address. Then copy all your compilation and construction files to the new project directory and choose "Add Files" from the project menu. The files selected will be copied into your project directory and the Makefile.am
's are updated. Please change all Makefile.am
entries existing before the conversion towards the now created entries done by KDevelop in the KDevelop area. Test, if your program can still be compiled and installed after the conversion to ensure the project's consistency.

## Generación de ejecutables

The Project Options dialog, accessed by the project menu, lets you specify all needed parameters for your project. Those will be used for the Makefile.am
's and the configure
.in script (e.g. version number change or compiler warnings
) and thereby set the compilation preferences as well.. After changing the project options, you should invoke "make
clean" or "rebuild all" to compile your project with the new options. Please mind that debugging
is only available if the project options are set to create debugging
information, the amount can be set with the debug level (0-3). If you add functions that belong to a library that is not included in the Linker
flags, your program will not link correctly if those are not updated, so keep track of your library linking.

For a release build of your application or for distributing the sourcecode package, you should watch the following standard settings:

- disable debugging

- enable optimization and set optimization level to -02

- set the compiler warnings
  to -Wall

- for each new release, increase the version number and update the project.lsm file for version and requirements.

### General Options

The first page of the Project Options dialog sets the general options for your project. These are project name and number, the handbook sgml file which is used for generating a set of HTML
files that are included in the project and specific information about the author. The short description field is for additional information that you want to include like the program's purpose and the like.

### Compiler Options

The compiler options
page sets the compiler flags towards your target, debugging
and additional.

#### Target

The target box contains three options that can be set:

Target Machine: You have the choice to set the target machine option here by choosing between your machine (default) and i386v, which is the option if you configure
d your Compiler
as a cross-compiler for an Intel 386-compatible machine running System V. This option sets the -b flag to the Compiler
. Usually you would leave this to the default.

only syntax-check: If checked, the -fsyntax-only flag is set. This means that the Compiler
will check your code only for correctness in regards to the syntax, but doesn't check anything beyond that.

Optimize: You can enable optimization for your build process by this option, meaning to set the -O flag. If not checked, the flag is set to -O0, so no optimization will be used. If you enable optimization by checking this option, you can as well specify the optimization level below from 1 to 3.

For a release version of your application, enable optimization and set the level to 2.

#### Debugging

Right of the Target box, you can see the debugging
-section. This means that you can set your Compiler
to include information for debuggers within the final binary, so the programmer can follow the execution of the application with the debugger in direct context to the sourcecode.

Enable debugging
therefore sets the -g flag; the debugging
level specifies the amount of information to be included in the binary. Available are level 1 to 3 to choose from. Mind that the binary execution will be slower by setting any debugging
option and that the binary size will increase by the debugging
level.

Generate extra information for gprof: sets the -pg flag, resulting that the Compiler
will include information for the gprof program that displays caller graphs of your program's function.

Store temporary intermediate files: sets the -save-temps flag. This will result in storing the usually temporary files produced by the preprocessor and the assembler. A compilation of a sourcefile will therefore produce three output
files: an *.o file which is the final output
of the Compiler
, an *.i file produced by the preprocessor and an *.s file as the output
of the assembler.

For a release of your project, disable any debugging
.

#### Additional Options

The text entry field on the bottom is intended for you to manually set any flags for the Compiler
by setting the CXXFLAGS environment variable
in the Makefile
s, so make sets the flags before the build process and reset them afterwards. For a complete description of all available Compiler
flags you should see your Compiler
documentation; for gcc and egcs this can be done by man gcc; man g++ will show you information about the c++ script that is used to lead the Compiler
.

### Compiler Warnings

The following gives a description about the Compiler
warning options that can be set on page 3 of the project options dialog. The explanations are taken from the man page for GCC, egcs version 1.1.1. The warnings
themselves are diagnostic messages that indicate that constructions may cause errors
.

-Wall

  Standard `-W' options combined.

-W

  Compile with -W. This option sets options not included in -Wall which are very specific. Please read GCC-Info for more information.

-Wtraditional

  Warn about certain constructs that behave differently in traditional and ANSI C.

-Wundef

  Warn if an undefined identifier is evaluated in an `&&num;;if' directive.

-Wshadow

  Warn whenever a local variable
  shadows another local variable
  .

-Wid-clash-LEN

  Warn whenever two distinct identifiers match in the first len characters. This may help you prepare a program that will compile with certain obsolete, brain-damaged Compiler
  s.

-Wlarger-then-LEN

  Warn whenever an object of larger than LEN bytes is defined.

-Wpointer-arith

  Warn about anything that depends on the «size of» a function type or of void. GNU C assigns these types a size of 1, for convenience in calculations with void * pointers and pointers to functions.

-Wbad-function-cast

  Warn whenever a function call is cast to a non-matching type. For example, warn if `int malloc()` is cast to `anything *.`

-Wcast-equal

  Warn whenever a pointer is cast so as to remove a type qualifier from the target type. For example, warn if a const char * is cast to an ordinary char *.

-Wcast-align

  Warn whenever a pointer is cast such that the required alignment of the target is increased. For example, warn if a char * is cast to an int * on machines where integers can only be accessed at two- or four-byte boundaries.

-Wwrite-strings

  Give string constants the type const char&&lsqb;;length] so that copying the address of one into a non-const char * pointer will get a warning. These warnings
  will help you find at compile time code that can try to write into a string constant, but only if you have been very careful about using const in declaration
  s and prototypes. Otherwise, it will just be a nuisance; this is why we did not make `-Wall' request these warnings
  .

-Wconversion

  Warn if a prototype causes a type conversion that is different from what would happen to the same argument in the absence of a prototype. This includes conversions of fixed point to floating and vice versa, and conversions changing the width or signedness of a fixed point argument except when the same as the default promotion.

-Wsign-compare

  Warn when a comparison between signed and unsigned values could produce an incorrect result when the signed value is converted to unsigned.

-Waggregate-return

  Warn if any functions that return structures or unions are defined or called. (In languages where you can return an array, this also elicits a warning.)

-Wmissing-prototypes

  Warn if a global function is defined without a previous prototype declaration
  . This warning is issued even if the definition itself provides a prototype. The aim is to detect global functions that fail to be declared in header files.

-Wmissing-declaration
s

  Warn if a global function is defined without a previous declaration
  . Do so even if the definition itself provides a prototype. Use this option to detect global functions that are not declared in header files. -Wredundant-decls Warn if anything is declared more than once in the same scope, even in cases where multiple declaration
  is valid and changes nothing.

-Wredundant-decls

  Warn if anything is declared more than once in the same scope even in cases where multiple declaration
  is valid and changes nothing.

-Wnested-externs

  Warn if an extern declaration
  is encountered within an function.

-Winline

  Warn if a function can not be inlined, and either it was declared as inline, or else the -fin*line-functions option was given.

-Wold-style-cast

  Warn if an old-style (C-style) cast is used within a program

-Woverloaded-virtual

  (C++ only.) In a derived class, the definitions of virtual functions must match the type signature of a virtual function declared in the base class. Use this option to request warnings
  when a derived class declares a function that may be an erroneous attempt to define a virtual function: that is, warn when a function with the same name as a virtual function in the base class, but with a type signature that doesn't match any virtual functions from the base class.

-Wsynth

  Warn when g++'s synthesis behavior does not match that of cfront.

make all warnings
into errors

  (-Werror) Treat warnings
  as errors
  ; abort compilation after any warning.

For a release of your project, it is recommended to enable -Wall.

### Opciones de enlazado

The Linker
Options for your current project can be set by the last page of the project options dialog. You have to enable those libraries that your application uses to link them to your binary with the Linker
, e.g. your application uses the class
KFileDialog. As the class
KFileDialog is part of the KFile library, you have to enable kfile. For classes
or functions that are not listed as checkboxes, use the "additional libraries" field.

#### Linker
Flags

remove all symbol table and relocation information from the executable:

  This means that all redundant information will be removed from the object files and the binary, resulting that debugging
  will not be possible. For as long as your application is in a development stage and not released as final, you should leave this option disabled.

prevent using shared libraries:

  This option disables the use of shared libraries on systems that support this. On systems using no shared libraries, this option will have no effect.

additional flags:

  Here, you can enter additional flags for the Linker
  , setting the LDFLAGS environment variable
  by make
  . The available options can be taken from the man page for ld or your Compiler
  manpage.

#### Libraries

The libraries section contains checkboxes for the most needed libraries in conjuction with Qt/KDE
application development. You have to enable those libraries that your application uses, otherwise the Linker
will complain about unresolved symbol tables.

X11

  The X11 library. Recommended for all X-Window programs.

Xext

  The X11 extension library. Also most X-Window programs depend on Xext.

qt

  The Qt-library
  . Recommended for Qt and KDE
  applications.

kdecore

  The KDE Core library; contains the classes
  for KDE Application frameworks.

kdeui

  The KDE User Interface library; contains KDE-specific widgets
  .

khtmlw

  The KHTML Widget library.

kfm

  The KFM library containing classes
  for KFM functions.

kfile

  The KFile library. Contains file dialogs etc.

kspell

  The KSpell library. Contains an interface for programs to use Ispell for spell-checking.

kab

  The KAdressBook library. Needed for access to the addressbook as well as providing addressbook widgets

additional libraries: Here you can enter additional libraries that your application needs, e.g. the KOM library. Set the libraries with the -l option; for the example -lkom.

#### Make

As GNU make
supports some useful options, the Project Options dialog contains a page called "Make-Options", where those can be en/disabled. The available settings are:

Print debug information

  prints out all information about the project files
  and what make
  determines for rebuilding them.

Continue after errors

  tries to continue with the compilation after an error occurred (e.g. a file couldn't be compiled due to an error)

Print the data base

  prints out the make
  -database for the current process which contains the changes from the last build-run.

Environment variables

  give the current environment variables a higher priority than the currently used variables in the Makefile
  s.

No built-in rules

  doesn't use built-in rules for make
  .

Touch files

  don't run the Compiler
  on changed files; instead only touches them. This sets them as already processed by make
  .

Ignore all errors

  Ignores all errors
  that occur

Silent operation

  doesn't print out any information about the build-process

Print working directory

  prints the current directory during the make
  -process.

job number

  sets the amount of parallel processes for make
  . For a single-CPU system we recommend setting this to one or two.

set modified

  sets the selected file modified. Choose the file by clicking the folder button on the right. Setting a file modified means that the file will be processed by make
  and compiled if it is a source file.

additional options

  set additional options to make
  ; those can be found in your local man page for "GNU Make".

## El navegador de clases

### The Classviewer

The KDevelop Classviewer is one of the most useful and important tools that the IDE provides a developer for managing his project sources. When a project is loaded, a class parser reads all project sources for functions, classes
etc., then displays the results in the CV
treeview. This chapter shows you how to use the Classviewer and the provided functionality and how it can improve your work.

Classes and their methods can also be accessed by the browser toolbar. There, the left combo selects the class; the right lets you choose the methods of the selected class. When you select a method, the classbrowser will automatically bring you to the implementation
file and sets the cursor to the method. Finally, the class-assistant button on the right of the method combo will bring you to the declaration
of the method on a click; on another click to the definition. The delayed popup menu, displayed by the down-arrow on the button, offers additional functionality that is also available in the classviewer's context menus, such as:

- Goto Declaration: browses to the declaration
  of the method

- Goto Definition: browses to the definition of the method

- Goto Class Declaration: browses to the class declaration

- New Class
  : opens the New Class
  dialog to construct a new class

- Add Method: adds a method to the selected class

- Add Attribute: adds an attribute to the selected class

#### Available Objects

By available objects, we describe a term that means that C++ code can be seen as a collection of objects- classes
, their members, global functions and the like. The classtree displays these objects logically and orders them by character, so they are easy to locate in the tree as well by their according icon. Therefore the classtree contains a "Classes" and a "Globals" folder. Thereby the "Classes" folder generally contains the project's classes
; if your project contains subfolders to manage your sourcefiles, these are also displayed by their original folder name and contain all classes
that are stored in the files located in the subfolder.

Further, when popping up a class, the classtree displays the class contents by separating methods and attributes
. As these can have attributes
as well like public, private and protected, these are displayed by modified icons as well. You see that a class displayed in the Class Browser contains all the objects that are present in the class declaration
.

Now, classes
are a very common thing when programming in C++ and will contain most of the code. But applications also contain objects that have a "Global" appearance to the program. These would be structs, functions etc. Especially the `main()` function appears in every application and you need to modify it in one or the other way sometimes. To access these objects, the Classviewer provides the "Globals" folder, containing subfolders for the following object types:

- Structs

- Functions

- Variables

As the icons displaying these items are similar to those used in the class-viewer, their meaning is easy to guess and to remember by the programmer.

Finally, it can be stated that the classviewer
displays your project graphically by their objects related to their appearance in the code. In the following section you will learn how to use the classviewer
and it's tools in conjunction with your code.

#### Browsing Object Declarations and Implementations

The Classviewer's best strength is providing a fast and good access to his code by the code's contents independent of the location within files. Therefore, selections by a mouse click will result in the following actions:

- On a classname: Switches to the class declaration

- On a class method: Switches to the method implementation

- On a class attribute: Switches to the attribute's declaration
  in the class declaration

- On a struct: Switches to the struct's declaration

- On a global function: Switches to the function's implementation

Now, this provides you the most needed access towards code objects. Apparently, it may be needed to change a method's header, resulting that you have to change it's declaration
in the class as well as the implementation
. The classviewer
supports this by providing right-button context menus over items. On a method or function, this means that you can select where to go:

- Go to definition: Switches to the implementation
  - this is the default for a left click as described above

- Go to declaration
  : Switches to the declaration
  of the method or function.

By this behavior, the Class Browser offers you access to every place you have to go for coding your C++ application.

The following sections give you a description of the other tools that the Class Browser offers- you will find them very useful when working with large projects as they enhance working object-orientated on C++ programs.

### The Classtools

The classtools are dialogs that makes it even more easier for the developer to get more information about his project's classes
. The classviewer
displays all objects by their occurrence in the code, but you sometimes want to get more information about classes
without having to look inside the code. Therefore, the classtool dialogs are specialized on displaying specific class attributes
.

The classtool dialog is invoked by the popup menu over a class in the classviewer
. Select "Classtool", and the dialog will appear. To get informed about a class, select the class in the combo box on top. Then the buttons in the toolbar provide functions that give you specific trees for your class. These are:

Parents:

  The parents of the selected class, which means the class it inherits. This is useful for multiple inheritance as well as to see why a class behaves in one or the other way, e.g. for dialogs your parent class could be `
  QWidget` or `
  QDialog`.

Children:

  Displays the children classes
  that inherit the current class.

Clients:

  Classes that make use of the selected class by an attribute in their class declaration

Suppliers:

  The suppliers that give attributes
  to the selected class.

Attributes:

  The attributes
  of the class by their name

Methods:

  The Methods of the selected class

Virtual Methods:

  The virtual methods that a class provides

Further, the selection of the attribute public, protected, private or all shows Attributes, Methods and Virtual Methods by their attribute value.

### Managing Classes

The Class Browser additionally allows adding methods and attributes
directly by dialogs. This means you don't have to type the classdeclaration
and the implementation
header yourself. After adding a method, you only have to set the formal parameters to the implementation
header and, if the method requires an attribute, to the declaration
.

How to add a method to a class

1. select the class you want to add a method

2. press the right mouse button; the popup menu appears

3. select "Add member function".

4. the "Add member function" dialog appears.

5. insert the type, declaration
   and documentation for the method

6. specify the access and the modifiers for the method

7. press OK to exit the dialog

For adding a variable
, this is the same action, just with selecting "Add member variable
" in the popup menu.

The difference between the actions of these dialogs is that the adding of a variable
will add the variable
to the classdeclaration
, the adding of a method will add the method's declaration
and the method's implementation
header to the sources. As the classviewer
directly updates himself, you have a direct access to the new method implementation
, so you only have to fill out the code for the actual purpose of the method.

## El editor de diálogos

The KDevelop integrated dialog editor
allows the easy construction of widgets
and dialogs your application uses all by graphical means. You see the direct appearance of your dialog as it will be presented to the user. Using the dialog editor
is usually the first step you would take after creating a new project with the KAppWizard
to create your main view, the user interaction dialogs and, after finishing the graphical work, the code generation. This way, your project will contain all the usually considered "difficult" parts that normally would take a long time to implement. Then, the "rest" of your work is implementing the functionality in the generated code. This chapter deals with how to use the dialog editor
to create your project widgets
as well as what to do in case you see your widgets
need corrections or additions during the further development process.

You can switch to the dialog editor
either by selecting "Dialog Editor" from the "View
"-menu or by the according toolbar icon. To switch back to the Project Editor, select "KDevelop" from the dialog editor
's "View
"-menu or by the icon in the toolbar.

What else does the dialog editor
's interface offer you ? Mainly, that its appearance is almost the same as the project editor in term of the main view separation as well as the menu- and toolbars. This allows you to make yourself accustomed with the dialog editor
very quickly and, as he completely interacts with the project management, stay in the dialog editor
if you want to control your build-process. Actions that require to switch back to KDevelop will do that automatically for you, like accessing the documentation browser. Just select the menu commands, and KDevelop reacts to your will.

The following chapters give you an overview of the dialog editor
interface, how to create a new dialog initially and how set up the properties of the child widgets
that your dialog contains.

### The Dialog Editor View

#### The Mainview

The dialog editor
's view is logically separated by:

- The Widgets Tabulator, containing the "Widgets", "Dialogs" and "Items" tabs. These are described in Adding Widgets.

- The Widget-Editor, representing the editing view for creating your dialog. See The Widget Editor

- The Properties window, containing a list of properties and their values, dependent on the currently selected widget in the widget editor. See Setting Properties for information how to specialize the widget's behavior and look.

#### Menubar
, Toolbar
and Statusbar
differences to KDevelop

In Dialogeditor mode, KDevelop changes the menubar, toolbar and statusbar slightly to provide the functionality you need for creating widgets
. These are:

##### Menubar

"File"-menu
: . "Open" allows to open a dialog definition file.

"View"-menu
: replaces "Tree-View" with "Widgets-View", en/disabling the Widgets-View tabulators; adds "Properties-View" to en/disable the Properties-View and "Grid Size" to let you specify the grid size in pixels for horizontal and vertical values.

"Build"-menu
: replaces "Compile File
" with "Generate Sources". This lets you actually generate the sources for your dialog.

##### Toolbar

The toolbar contains a new icon for "New Dialog" as well as a replacement for "Compile File
" by "Generate Sources".

##### Statusbar

The statusbar is providing you information about the currently selected widget, especially displaying the values for X and Y size in the coordinate system. For Statusbar
help, you are provided the same functionality than in Project-editing mode.

While changing widget size, the statusbar shows the current values for width and height of the selected widget.

### Creating a New Dialog

After creating your project skeleton, you are provided a ready-to-run application, according to your preferences. As KDevelop provides the project types KDE and Qt application, the dialog editor
recognizes this and offers widget construction by the widgets
that are provided by the used libraries. To save time, you already should have a design in mind that will do the intended actions. For information about widget design, see The KDevelop Programming Handbook.

To create a new dialog, select "New" from the "File"-menu
or select "New" from the context menu in the "Dialogs" tab. The New File Dialog appears where you can select the item Qt/KDE Dialog(*.kdevdlg). Enter the file name for your dialog to save the layout to. Then press OK and a new dialog will appear. When finished with the new dialog, select "Generate Complete Sources" from the Build-Menu. The dialog to generate the widget´s source file will appear. There you have to give KDevelop the dialog-specific information about the baseclass, the source file names and destination.

#### Dialog Class

The dialog class you can select, is the class that is inherited by your new widget, which is technically represented by a class itself. Therefore, you have the following options:

1. QWidget: the base class for all user interaction widgets
   provided by Qt. Used for main views and top-level widgets
   .

2. QFrame: inherits `
   QWidget` and is used by numerous widgets
   as a base class. This is useful for widgets
   that already want to have a `
   QFrame` functionality in addition to `
   QWidget` methods.

3. Custom: inherits a custom class that has to be set in the "Custom Properties". This could be an already designed class provided by your project or the libraries.

4. QDialog: the base class for dialogs that you would inherit for user interaction like setting properties or changing values.

5. QTabDialog: inherits
   QDialog and provides a dialog with predefined buttons and a set of tabs, which you will provide by the widgets
   that you create.

Custom Properties

For the inheritance of a custom class as selected in the dialog class field, you have to specify the classname, which goes to "Custom Class". The dialog editor
uses this for the code-generation; therefore, you also have to insert the "Custom Header", where the header filename of the custom class has to be set.

#### Files

In the "Files" section, you have to enter the widget's specific information. This is the classname (which would be e.g. KColorSelectDlg for a dialog that allows selecting the color of a pen), the header, C++ and Data filenames. When inserting the Classname, the filenames are given by the dialog editor
, but you can as well change the filenames.

Now, what about the files ? When you are ready with constructing the widget visually, you will have to generate the files that contain the implementation
for your widget. As this will be a class, the dialog will exist by the header file containing the classdeclaration
, a C++ file containing the method implementation
for your widget's methods and slots. The Data file is the file that will contain a function that is called by the constructor of your widget, the initDialog() method. The file itself shouldn't be changed as it will contain the generated code from the dialog editor
to create the widget on the screen. If you ever have to change values, you should do this by the constructor or be sure that you won't change the dialog during the development process, as the Data file will be overwritten each time the code is generated for your widget. The header and C++ file contain sections, where the dialog editor
writes; these are marked by comments. After file generation, you can change any values and settings outside these sections; otherwise your changes will get lost by the next code-creation.

#### Location

For generating the widget's sources, the dialog editor
needs to know the location where these will go. The default value for the output
directory is the current project subdirectory containing the sources already present.

After pressing "OK", your default values are generated and an empty Widget constructor is opened. Then you are ready to go for creating your own widget. Mind that the dialog editor
currently only supports static widgets
without geometry management. If you're about to use geometry management for your widgets
, you should make yourself accustomed with the classes
that Qt provides for this, create a new class with the classgenerator and write your widget by hand. For more information, see The KDevelop Programming Handbook.

### Adding Widgets

After specifying the dialogs or widgets
class and filenames, you are ready to start creating the widget and filling it with contents. Adding low-level widgets
to your dialog is a very easy task. Just select the widget you want to add from the "Widgets" tabulator on the left by a single click over the according widget icon. The widget will then be laid on the left upper corner of the currently opened main widget. An added widget then gets the default size of 100x30 pixels on the editor
view. To move a widget, click over it to activate the drawing frame, which is displayed in dark grey with hot spots on the corners and on the center of the top, bottom, left and right sides of the widget. A cross-cursor indicates that the widget can be moved. To move it, press the left mouse button and keep it pressed. then move the widget with your mouse to the place you want to have it displayed later.

To resize a widget, move your mouse cursor over one of the hot spots of the already activated item. The mouse cursor then changes to a double-arrow indicating the directions, in which resizing can be done. Press the left mouse button and hold it pressed. The widget item will change it's size when the mouse is moved to the direction indicated by the cursor.

Further, the widget editor contains a lot of context menus to help you coordinate your work. Those are available over all items in the widgets
tabulator and give you a quick help message window that shows the class name of the selected widget with a short description. Over a selected widget, the context menu shows the class name of the selected item and offers:

- Raise

- Lower

- Raise to top

- Lower to bottom

- Cut

- Delete

- Copy

- Paste

- Help

After setting the size and position, you can edit the preferences for the selected item on the Preferences window.

#### The Widgets Tabulator

The widgets
tab represents the available widgets
you can place on the dialog. If you want information about a certain widget, press the right mouse button over a widget icon and select "Quick-Help" from the popup-menu. Mind that the dialog editor
automatically determines, if your project type is Qt-only or KDE. This prevents you from using KDE-widgets
in a Qt application.

After you selected a widget item, it is placed with default sizes and values on the editing window and marked selected by a frame and darkened corners. To resize a widget, move your mouse over one of the dark spots and your cursor will change to display which resizing directions are possible. Then press the mousebutton and move the mouse while holding it. When you're finished with resizing the widget, release the mouse. While resizing, the statusbar displays the current position of the item by X and Y values and the current size by W(Width) and H(Height) values.

#### The Dialogs Tabulator

The dialogs tabulator is intended to let you open your project's dialogs by a mouseclick. As the dialog's structure is saved in a *.kdevdlg file within the directory that contains the generated files, only those dialog definition files are shown. Also mind that you don't delete these definition files.

On selecting a dialog, it will be shown as by the state it was saved in the last editing step in the Widget-Editor view.

#### The Items Tabulator

The Items tabulator lets you have an overview over the currently present widget items of the dialog hierarchically. This means, that, as your background represents the parent of all widgets
within the dialog, it is shown on top of the tree. The children of the main dialog are then listed in the next tree-level.

On selecting an item, it gets marked in the editor view, as well as the properties are shown in the properties window. Using the items view is sometimes important if your widgets
behavior depends on the parent-child relationship.

### The Widget Editor

The Widget Editor is the main view that is placed in the middle and where you are constructing your widget. After adding items, those can be selected and resized, as well as moved to the place you need them. Over all items, popup menus provide a quick access to functions like cut, copy and insert.

### Setting Properties

The properties window on the right is the place where you set the default behavior for the widget and its items. It displays the pre-set values for each selected item right away; changing values will result in direct changes on the Widget Editor view, e.g. naming labels or buttons.

To separate certain property values by their effect, the properties window contains four folders; selecting a folder will pop up all values for the properties group. All possible values are described below. Mind that the properties are dependent on the widget, e.g. a label and button will have a property for their on-screen name, while lineedits will have properties for methods like setText().

For a complete list of the available values per item, you should see the class-reference of the widget which explains the used methods and all possible values. Note that most values are implemented in `
QWidget` and are used for all widgets
that inherit
QWidget. Also mind that the final code does not contain any method calls that are unchanged by the user and therefore use the default values as given in the widget's constructors.

A complete list of the supported properties that can be set in the properties window for each widget item.

### Generating Files

After creating a widget, you have to generate the sourcecode to make it available in your project. This can be done either with the "Generate Sources" from the "Build"-menu or by the according icon in the dialog editor
toolbar. Your Makefile
s will be updated automatically to include the new widget in the compiling process; therefore, after calling "Generate Sources", you can build your project again within the dialog editor
. The output
window pops up below the Widget-Editor window as in Project Editor mode.

Now that your project contains a new widget, your work as a programmer is to implement functionality to the used slots and eventually add other methods you may need. See The KDevelop Programming Handbook, The Dialogeditor for more information about widget properties and sourcecode generation.

## Integración con CVS

KDevelop also takes care of managing your project via CVS repositories. The goal behind CVS (concurrent version control) is to enable groups of developers to work on the same source-tree independently and to merge changes into the repository. Usually, the repository is located at a server. The initial repository contains the base set of files that the project includes; directories and files are then added or removed to the CVS by the developers.

Locally, the developer works on his copy of the CVS tree. He writes his changes into his files and tests, if his project still works, at least to a certain extend where incomplete sources don't prevent other developers from still working on the CVS repository if they receive the changes.

### Enabling CVS Support

As CVS support is most often only needed by professionals or companies as well as by KDE developers maintaining their project over the KDE CVS server, using the CVS commands of KDevelop is optional. To enable the CVS commands, open the Project-Options dialog and change the option for Version Control to "CVS".

### Using CVS Commands

Then the following commands are available in the LFV and RFV by context menus:

Over a file not included in the repository:

- Add to Repository: adds the file to the repository. The file is set up to be added and will be introduced to the repository on the next `commit` command that includes the directory where the added file is located locally.

Over a file included in the repository:

- Update: update the selected file with the CVS version

- Commit: commit the selected file to the CVS repository

- Remove from Repository: remove the file from the repository

Over a folder:

- Add: adds the folder to the repository

- Remove: removes the folder from the repository

- Update: update the folder recursively to be in sync with the repository

- Commit: commit any changes recursively to the repository

The CVS commands all require a working network connection to the CVS server. When invoking a command, you will be shown a dialog with the command sent to the CVS server and the retrieved output. Thereby you can control what actually happens and if the command was successful or not.

As the CVS commands of KDevelop only work with the `cvs` system command and its commandline options, you should have no trouble to use the cvs features.

## Configuración general

This chapter describes how you can set your individual preferences about how KDevelop works. All settings addressed below can be found by the according entry in the Options-menu.

### Configurando el menú Herramientas

As KDevelop supports the use of third-party programs within it's user interface, you are able to configure
any program that suits your needs towards application development. This can be done by adding programs to the already pre-defined ones in the "Tools"-menu
. To change the tools-menu, select "Tools
" from the "Options" menu. This dialog allows to specify the entry name, program and additional command line options you want to pass to the execution. To remove a program from the menu, select the entry name and choose "Delete". To add a program, specify the menuentry, where a & is used as a menu-accelerator; you may compare the already configured entries with the entry list. Select the binary and pass your commandline options. Then hit "Add" and the entry is added to the list. After leaving the configuration dialog
, the tools-menu updates itself, so the new configuration is already usable without restarting KDevelop.

### File Viewer Options

The Logical File Viewer can be configured by context menus completely. As it's intention is to separate files logically to keep a better overview over complex projects, one of the most used configurations is to create file groups. Those can be set by opening the context menu with a right mouse button click over the project icon displayed at the root of the tree. The menu offers:

- New File
  : Opens the New File
  dialog. Equals to the menubar command "File"-"New"

- New Class
  : Opens the Classgenerator to create a new class. Equals to the menubar command "Project"-"New Class
  "

- New Group: Opens a dialog to create a new group. There, set the group name and the file filter for the project files
  that will be displayed in this group.

- Show relative path: displays the files with their path name starting from the main project directory if checked; otherwise only the filename is shown.

Over a group folder, the according context menu offers:

- New Group: Opens the New Group dialog as in the context menu described above.

- Remove group: removes the group from the LFV
  .

- Properties: Opens the properties of the group. There, you can edit the file filters by a list of wildcards separated by commas.

### Configuración de KDevelop

Make-command
: The General Options dialog lets you configure KDevelop's general settings. First, you should set the make-command
available on your system. If the selected program does not exist, KDevelop will warn you the next time you're invoking a make command.

Autosave
:

If Autosave is checked, KDevelop will save all changed files periodically. The autosaving time range can be set to 3, 5, 15 or 30 minutes.

Autoswitch
:

If Autoswitch is enabled, the KDevelop windows will switch on and off according to the usage context, e.g. if you switch to a documentation in the Help-menu, the Documentation browser will be opened, together with the documentation tree and the output
window turned off. Startup:

For starting KDevelop, you have the option to enable/disable the start-logo
to be shown during the time KDevelop loads. Further, if you don't like the last project to be opened on startup, you can disable the default behavior.

### Cambiando los atajos de teclado

The Configure Keys dialog lets you configure the KDevelop key bindings. Note that global keys can be configured in the KDE Control Center, such as open file and print. A key function can be configured by choosing the menu entry. Then the configuration can be changed by checking values like the Alt / Ctrl key etc.

### Documentation

#### Directories

For setting up the documentation browser
to work correctly, KDevelop needs some information about where the HTML
-documentation is placed on the system. Therefore, the Documentation Path properties dialog needs the path of the Qt- online documentation in HTML
as well as the path to the KDE-Library documentation.

Usually, the Qt-Documentation
is placed in the same directory where Qt is installed; e.g. if Qt resides in /usr/local/qt, the path you have to enter is /usr/local/qt/html. For the KDE- Documentation, you have to set the directory to the root of the documentation, assumed all KDE-Libs documentation resides in the same directory. Both path's can be selected by pressing the according buttons, displaying a path-selection. If your system doesn't contain the documentation for the KDE-libs, you should first enter the next configuration dialog
, Update KDE-Documentation
. This will create the documentation to a path of your choice, also setting the KDE Library Doc path automatically.

#### Options

##### Update KDE-Documentation

For those users who don't have a recent documentation of the KDE-libraries
, especially the documentation for the files installed on the system, the Update KDE-Documentation
dialog creates a new one or updates existing documentations. This function requires your system to have KDoc
and qt2KDoc
installed, included in the KDE-SDK
package. First of, you have to set up the path to your recent kdelibs sources, which is not the include-path for KDE ! Just enter the path to the sources, like: /home/rnolden/kdelibs-1.1/.

Then, you can choose three different installation modes, as:

- Delete old Documentation and install to recent Documentation-path: this assumes that you already have a documentation installed and is placed in the path the Documentation Path-dialog was entered. This will delete all documentation and install the newly generated documentation into the recent path.

- Delete old Documentation and install to new Documentation-path: this will result in deleting the old documentation as well as above, but gives you the choice to set up a new documentation place.

- Leave old Documentation untouched and install to new Documentation path: This is recommended for a new generation of the kdelibs documentation for users who didn't have one before and for those who want to keep the last documentation for an older kdelibs version.

The "new KDE Libs Documentation path" is to be set for option 2 and 3 of the installation mode. This is also recommended for users who generate a new documentation from scratch.

After pressing the OK button, KDevelop will create a subdirectory "KDoc
-reference" in the documentation path containing the KDoc
reference files. First, the qt library documentation classes
will be indexed to connect the Qt documentation with the documentation to be generated for the kdelibs. So it is important that you have set up the Qt documentation path first to ensure that it can be found by `
qt2kdoc`. Finally, the KDE libs will be indexed and the documentation will be build with cross-references to give browsing the most functionality.

##### Create Search Database

The Create Search Database dialog, accessed via the create-button, allows the programmer to create a database to search for a keyword interactively. To create and use the documentation search function, you must have the program glimpse
4.0 installed. Preset are the options to index the given KDE-Library documentation as well as the Qt-Documentation
, assuming the path to the documentation files were set in the "Documentation Path" dialog of the options- menu. Additionally, the index can include directories the user can set up himself by the "additional directories to index"-field. After setting a path to an additional directory, the "Add" - button must be pushed to set the path. A path once set can be removed from the index by selecting the path in the path field and pushing "Remove". Furthermore, the user is offered three different modes for the index size: tiny, small and medium. The higher the index size, the more the index files will grow. On the other hand, a search in a bigger search-database will be faster and more successful, so we suggest choosing a "medium" size. For using the search function, see section Utilizando el navegador de documentación.

## Preguntas y respuestas

Esta sección trata preguntas de los usuarios que fueron respondidas por el equipo de KDevelop o por sus colaboradores, en la lista de correo de KDevelop. Las preguntas versan sobre algunas experiencias con versiones actuales de KDevelop y sobre la notificación de errores en general.

### Notificando errores

Otra mejora de KDevelop es el sistema integrado de notificación de errores mediante correo electrónico. Si descubre un error, puede optar por informar al equipo de KDevelop mediante un programa de correo o mediante el diálogo de notificicación de errores. Todos los informes de error se recogen en la web de KDevelop y pueden examinarse en \|\|. También puede recibir todos los informes de error suscribiéndose en la lista de correo de informes de error, enviando un correo electrónico a kdevelop-bug-report-request@fara3.cs.uni-potsdam.de con el texto "subscribe tu&&lowbar;;dirección&&lowbar;;de&&lowbar;;correo&&lowbar;;electrónico" como contenido del mensaje.

Para informar de errores, por favor, utilice esta dirección con su programa de correo. Si desea utilizar KDevelop para notificar un error, seleccione "Notificar error..." desde el menú Ayuda
. Se le mostrará un diálogo de notificación que le permitirá introducir toda la información necesaria sobre el error encontrado. Tras pulsar "Aceptar" el contenido del diálogo será enviado automáticamente a la lista de correo.

### Dónde obtener información

P: Tengo una duda que no está respondida ni en el fichero de preguntas frecuentes (FAQ), ni en los manuales de KDevelop. ¿Con quién contacto?

R: En cualquier caso, envía todas las peticiones relacionadas a la lista de correo de KDevelop. Para ello suscríbase enviando un correo a kdevelop@fara3.cs.uni-potsdam.de con la cabecera vacía y con "subscribe" como contenido del mensaje; de esta forma podrá participar en las discusiones de la lista. Todas las preguntas deben ir a esa dirección, y también serán tratadas en ella. Si sigue estos pasos, obtendrá toda la ayuda posible de los desarrolladores y de los usuarios que tengan los mismos problemas, además de que ayudará a mantener el documento de preguntas frecuentes actualizado.

La página web de KDevelop
situada en \|\| contiene un archivo de la lista de correo
que le permitirá navegar por los mensajes ya enviados por los suscriptores, por lo que le recomendamos que mire ahí en primer lugar, ya que lo más probable es que la mayoría de problemas ya hayan sido tratados por el equipo o por otros usuarios.

### Problemas del sistema o de bibliotecas

P: Obtengo el siguiente mensaje de error: "Wrong JPEG library version: library is 61, caller expects 62"

R: Hay dos soluciones.

1. Cuando se instalan las kdelibs, se instalan ficheros de cabecera para la biblioteca jpeg, en su versión 61. Sin embargo, la mayoría de distribuciones (Redhat) usan la versión 62 de la biblioteca. Para solucionarlo, elimine el fichero jpeglib.h de /opt/kde/include. El fichero de cabecera de la versión 62 debería utilizarse ahora. De todas formas, mirando el error, puede que se trate del caso inverso. En cualquier caso, asegúrese de que sólo tiene una versión del fichero de cabecera, de la biblioteca, y de que ambos se corresponden.

   Es útil utilizar el comando locate para comprobar que tiene la versión correcta de la biblioteca y del fichero de cabecera, ej:

        updatedb
        locate libjpeg
        locate jpeglib

2. Recompile kdesupport sin la biblioteca jpeg (./configure
   --with-libjpeg --with-libgif).

P:Obtengo el siguiente mensaje de error:

    make[2]: Entering directory `/usr/local/src/kdevelop-0.3/po'
    cd .. && automake --gnu --include-deps po/Makefile
    aclocal.m4: 2709: `AM_PROG_INSTALL' is obsolete; use `AC_PROG_INSTALL'
    make[2]: *** [Makefile.in] Error 1

R: Solución para los usuarios de automake-1.4/automake-2.13: Ejecute "aclocal" manualmente, entonces compilará.

P: ¿Qué hago si al ejecutar configure
se me informa de que me hace falta la biblioteca giflib23?

R: Pruebe con una versión más moderna de kdesupport, ¿o tal vez tiene otro giflib instalado?

P: ¿Cómo convierto un proyecto de KDevelop 0.2 en un proyecto de la versión 0.3?

R: Modifique la opción AC&&lowbar;;OUTPUT en el fichero configure
.in para que esté en una sola línea.

por ejemplo: versión antigua:

    AC_OUTPUT(Makefile \
    kdevelop/kwrite/Makefile \
    kdevelop/templates/Makefile
    )

versión nueva:

    AC_OUTPUT(Makefile kdevelop/kwrite/Makefile kdevelop/templates/Makefile)

P: Obtengo los siguientes errores
de enlazado
, utilizando SuSE Linux con KDE 1.1. ¿Qué hago para poder enlazar KDevelop?

    /usr/lib/libqt.so:
    warning: multiple common of `QArrayT&<;char&>; type_info node'
    ckdevelop.o: warning: previous common is here
    ckdevelop.o: In function `CKDevelop::slotFileSaveAll(void)':
    ckdevelop.o(.text+0x784): undefined reference to `kdebug(unsigned short,
    unsigned short, char const *,...)'
    ckdevelop.o(.text+0x839): undefined reference to `kdebug(unsigned short,
    unsigned short, char const *,...)'
    ckdevelop.o(.text+0x89d): undefined reference to `kdebug(unsigned short,
    unsigned short, char const *,...)'
    ckdevelop.o: In function `CKDevelop::slotFileSaveAs(void)':
    ckdevelop.o(.text+0xd28): undefined reference to `kdebug(unsigned short,
    unsigned short, char const *,...)'
    ckdevelop.o: In function `CKDevelop::slotFileClose(void)':
    ckdevelop.o(.text+0x1216): undefined reference to `kdebug(unsigned short,
    unsigned short, char const *,...)'
    ckdevelop.o(.text+0x1263): more undefined references to `kdebug(unsigned
    short, unsigned short, char const     *,...)' follow  collect2: ld returned 1
    exit status  make[2]: ***
    [kdevelop] Error 1  make[2]: Leaving directory
    '/home/LinuXDaten/Programme_Updates_Packete/KDE_Updates/Kdevelop_actual_sna->
    ->pshot/kdevelop-0.3/kdevelop'
    make[1]: *** [all-recursive] Error 1  make[1]: Leaving directory
    `/home/LinuXDaten/Programme_Updates_Packete/KDE_Updates/Kdevelop_actual_sna->
    ->pshot/kdevelop-0.3'
    make: *** [all-recursive-am] Error 2

R: Si tiene instalado los paquetes rpm del KDE 1.1 de SuSE, debe recompilar kdelibs sin el parche incluido por SuSE y reinstalarlas, o conseguir un rpm actualizado de kdelibs desde \|\|

### Preguntas de utilización

P: Veo que KDevelop no permite el uso de la tecla Suprimir (o de la de retroceso) para borrar un texto seleccionado.

R: Vaya a "Opciones"->"Editor..." y asegúrese de que la opción "Borrar al escribir" está habilitada, entonces funcionarán las teclas de suprimir y retroceso.

P: Si añado ficheros a mi proyecto, ¿serán incluidos y compilados automáticamente?

R: Sí, serán incluidos en los ficheros Makefile.am
y, si selecciona "Reconstruir todo", (./configure
actualizará los ficheros Makefile
) y sus ficheros serán incluidos.

P: Borré un fichero y obtengo unos extraños mensajes de enlazado
. ¿Qué le pasa a mi proyecto?

R: Si el fichero eliminado era un fichero de cabecera, que es procesado automáticamente por automoc (ejecutando Qt-Meta-Object-Compile automáticamente en todas las cabeceras), su fichero de cabecera aún está presente como fichero *.moc.cpp y es compilado. Elimine el fichero *.moc.cpp correspondiente y reconstruya el proyecto.

P: Configure se queja de que no es capaz de compilar una pequeña aplicación KDE. Al examinar el fichero config.log se ve que no puede encontrar la biblioteca libXext. R: Instale el paquete xdevel

P: Estoy desarrollando una aplicación en la que se le debe pasar opciones del tipo -D al preprocesador. Si añado las opciones en las opciones del proyecto, todo va bien, pero cuando distribuyo el paquete, las opciones -D seleccionadas en KDevelop no se utilizan. ¿Qué he de hacer para que se utilicen? R: Edite el fichero configure.in situado en el directorio raiz de los fuentes. En él debe introducir, cerca del principio:

CXXFLAGS=$(CXXFLAGS) " -DSusOpciones" AC&&lowbar;;SUBST(CXXFLAGS)

P: Estoy utilizando una instantánea de KDE2 y deseo utilizar KDevelop bajo KDE2. ¿Cuál es la mejor forma de conseguirlo? R: KDE2 aún está siendo desarrollado, por lo que le recomendamos que considere utilizar una versión 1.x estable para usar KDevelop. En cualquier caso, KDevelop 1.x puede ser fácilmente ejecutado en KDE2 mediante un fichero de comandos de shell (script) con el siguiente contenido:

&&num;;/bin/bash QTDIR=/usr/lib/qt-1.44 export QTDIR KDEDIR=/opt/kde export KDEDIR exec /opt/kde/bin/kdevelop

Guarde este fichero como (por ejemplo) kdevelop1 y márquelo como ejecutable mediante

chmod 755 kdevelop1

Con esto podrá ejecutar KDevelop 1.x bajo KDE 2 ejecutando kdevelop1. Para desarrollar aplicaciones para KDE 2 con KDevelop 1.x debe configurar correctamente los directorios en la configuración de KDevelop, aunque esté ejecutando KDevelop bajo KDE 2.

## Autores

Desarrolladores principales:

Sandy Meier <smeier@rz.uni-potsdam.de> (mantenimiento, coordinador de desarrollo y proveedor de la página web) Desarrollo principal de: estructura del programa, apariencia del entorno, gestión del proyecto.

Stefan Heidrich <sheidric@rz.uni-potsdam.de> Desarrollo principal de: KAppWizard
, habilidad de impresión

Ralf Nolden <Ralf.Nolden@post.rwth-aachen.de> Desarrollo principal de: intefaz del editor de diálogos, opciones de configuración, ayuda y manuales en línea

Jonas Nordin <jonas.nordin@cenacle.se> Desarrollo principal de: visor y analizador de clases

Pascal Krahmer <pascal@beast.de> Desarrollo principal de: editor de diálogos

Bernd Gehrmann <bernd@physik.hu-berlin.de> Desarrollo principal de: diálogo de la herramienta grep, integración del CVS, nuevo árbol de documentación

Jörgen Olsson <jorgen@cenacle.net> Desarrollo principal de: árbol de clases visual

Stefan Bartel <bartel@rz.uni-potsdam.de> Desarrollo principal de: visor real de ficheros

Walter Tasin <tasin@kdevelop.de> Desarrollo principal de: mejoras y depuración de errores

John Birch <jbb@ihug.co.nz> Desarrollo principal de: depurador integrado

Coordinador de traducciones:

Martin Piskernig <martin.piskernig@stuwo.at>

Traductores del programa y la documentación:

- Martin Spirk <spirk@kla.pvt.cz> -Checo

- Steen Rabol <rabol@get2net.dk> -Danés

- Peeter Russak <pezz@tkwcy.ee> - Estonio

- Sami Kuhmonen <sami@iqs.fi> -Finlandés

- Herve Lefebvre <hlefebvre@easynet.fr> -Francés

- Martin Piskernig <mpiskernig@kdevelop.de> -Alemán

- Ralf Funken <rfunken@kdevelop.de> -Alemán

- Pahan Szabolcs <szabczy@bigfoot.com> -Húngaro

- Massimo Morin <mmorin@schedsys.com> -Italiano

- Taiki Komoda <kom@kde.gr.jp> - Japonés

- Jacek Wojdel <wojdel@kbs.twi.tudelft.nl> -Polaco

- Duarte Loreto <dnloreto@esoterica.pt> -Portugués

- Guilherme Ceschiatti B.M.<guiga@cpdee.ufmg.br> -Portugués/Brasil

- Ilmar Habibulin <ilmar@ints.ru> -Ruso

- Jan Prokop <jprokop@ibl.sk> -Eslovaco

- Salvador Gimeno Zanón <salgiza@eui.upv.es> -Español

- Patrik Adolfsson <patrik.adolfsson@iname.com> -Sueco

- Kaðan Kongar <kongar@doruk.net.tr> - Turco

- Sunchange Lee <leesongchen@263.net> - Chino simplificado (GB2312)

Logo de inicio:

- KDevelop 1.0: Jacek Wojdel <wojdel@kbs.twi.tudelft.nl>

- KDevelop 1.1, 1.2: Ralph Kocher <RKocher@t-online.de>

Colaboraciones, parches y arreglo de fallos:

- Pau Estalella Fernandez <pef@upcnet.upc.es>

- Jost Schenk <Jost@Schenk.de>

- David Barth <dbarth@videotron.ca>

- Matthias Hipp <Matthias.Hipp@gmx.de>

- Martin Piskernig <martin.piskernig@stuwo.at>

- Jochen Wilhelmy <digisnap@cs.tu-berlin.de>

- Matthias Hoelzer-Kluepfel <mh@caldera.de>

- Matt Koss <koss@napri.sk>

- Torsten Uhlmann <TUhlmann@debis.com>

- Stefan Mars <mars@lysator.liu.se>

- Nikolay Liber <nikolay_liber@mail.ru>

- Gordon Tyler <gtyler@iafrica.com>

- Huy Cuong Nguyen <huyc@iquebec.com>

- John R. Zedlewski <zedlwski@princeton.edu>

- Stephan Uhlmann <suhlmann@gmx.de>

- Charles Egan <cega@oklahoma.net>

- Andrew Morton <morton@nortelnetworks.com>

- p&&lowbar;;george <p_george@club-internet.fr>

- Lubos Lunak <l.lunak@sh.cvut.cz>

- Armin L. Schneider <armin@uumail.de.uu.net>

- Martin Spirk <spirk@kla.pvt.cz>

- Ralf Palsa <rpalsa@eso.org>

- Richard Dale <Richard_Dale@tipitina.demon.co.uk>

- Holger Schurig <holger@holger.om.org>

- Dag Andersen <dandersen@c2i.net>

- Alexis Mikhailov <alexis@abc.cap.ru>

- Ulltveit-Moe <Nils.Ulltveit-Moe@hia.no>

- Nich Hudson <nick@nthcliff.demon.co.uk>

- R. Imura <imura@cs.titech.ac.jp>

- Falk Brettschneider <gigafalk@yahoo.com>

- Ralf Funken <rfunken@kdevelop.de>

KDevelop contiene código fuente de las siguientes aplicaciones:

KWrite 0.98 &©; por Jochen Wilhelmy <digisnap@cs.tu-berlin.de>

KDE Help &©; por Martin R. Jones <mjones@kde.org>

KSwallow &©; por Matthias Hoelzer <hoelzer@physik.uni-wuerzburg.de>

kcmlocale &©; 1998 por Matthias Hoelzer <hoelzer@physik.uni-wuerzburg.de>

## Agradecimientos

Nos gustaría mostrar nuestro a gradecimiento a todos los familiares y amigos que nos apoyaron de distintas maneras para ayudarnos a construir y mejorar KDevelop.

Además, gracias a Jochen Wilhelmy por ofrecernos su programa kwrite y por su ayuda al integrarlo con KDevelop.

Gracias también al equipo de KDE y a Stephan Kulow, quien nos dio la posibilidad de trabajar en KDevelop mediante un CVS.

Esperamos que nuestro trabajo en este producto conduzca a una mejor aceptación del software libre y su desarrollo. Sin la ayuda y el idealismo de muchos, KDevelop nunca podría haber sido creado en tan poco tiempo, y estamos orgullosos de que haya tantos usuarios que ya han comentado sus buenas experiencias con el programa, conduciéndolo a su propósito: ayudar a los programadores de software libre a construir un mundo mejor en el que los usuarios tengan la libertad de la elección.

## Copyright

    KDevelop Copyright 1998,1999,2000 The KDevelop Team.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.