# Руководство &kdevelop;

## Об этом руководстве

Руководство пытается описать использование элементов среды &kdevelop; с точки зрения пользователя. Это не руководство по программированию, и не описание подробностей разработки. Здесь описывается лишь удобное средство создания программ.

В руководстве затронуты такие темы:

- В nutshell — краткий перечень наиболее часто используемых команд и действий.

- Разработка ПО в UNIX — обзор истории развития программных средств для UNIX, основные инструменты и почему вам не обойтись без IDE.

- Установка &kdevelop; — пока автоматизация установки/компиляции ПО под UNIX не доведена до совершенства, такая глава продолжает быть востребованной.

- Обзор возможностей &kdevelop; — знание всех элементов IDE поможет вам повысить свою производительность.

- Обзор меню и панелей инструментов — (в приложении) краткое описание элементов.

- Настройка &kdevelop; — поможет вам настроить IDE под себя.

- Начало работы: &appwizard; — описание процесса создания нового приложения в &kdevelop; с помощью Мастера приложений.

- Средства редактирования — всё, что вам нужно для написания исходного кода ("исходников"): начиная от редактора, поиска текста (как локально, так и в рамках проекта), и заканчивая вставкой (интегрированием) новых файлов и классов в существующий проект.

- Обозреватели файлов — демонстрация различных средств обзора структуры вашего проекта, упрощающих доступ к файлам, с которыми вы желаете работать.

- Обозреватели классов — один из самых мощных инструментов &kdevelop;, обеспечивающий навигацию по классовым зависимостям, создание новых классов и методов.

- Документация — здесь описано как получить доступ богатой встроенной документации &kdevelop;, как создать документацию для вашего проекта, сжатое и мощное описание API (Application Progamming Interface), содержащее обзор исходных кодов вашего проекта, а также руководства в формате docbook.

- Сборка и управление проектом — описание процедур создания и управления проектом, основы autoconf и automake, как создать собственные файлы make, а также использование ключей компилятора и make для тонкой подстройки вашего приложения.

- Расширенное использование autoproject — обзор путей создания нескольких конфигураций сборки, кросс-платформенности и создания встроенных систем с использованием библиотеки Qt/embedded.

- Интерфейс отладчика — использование интегрированного отладчика gdb, благодаря которому вы сможете локализовать ошибки в программе, не покидая &kdevelop;.

- Использование CVS — применение системы, без которой не обойтись ни одному среднему-большому проекту, особенно с несколькими разработчиками.

- Вызов внешних программ — запуск внешних утилит из среды &kdevelop;.

- Модули — обзор частей, формирующих &kdevelop;, и как вы можете подстроить их под свои нужды посредством загрузки только нужных частей, как во всей IDE, так и в рамках проекта.

## В Nutshell

В этой главе описывается начальная информация об оболочке.

## Проекты

- ## Создание нового проекта

  Проект Новый проект... приведёт к запуску Мастера приложений.

- ## Использование опций проекта

  После создания нового проекта не забудьте настроить его черезПроект Project Opions....

## &automanag;

- ## Создание нового проекта

  Select the subproject in the upper half of the &automanag;, then right click in the lower half on the groups title you want to have the files added and select Create New File....

- ## Добавление существующих файлов в проект

  Вы берите подпроект в верхней части окна &automanag;, вызовите контекстное меню групп в нижней части и выберите Add Existing Files....

- ## Удаление файла из проекта

  Вы берите подпроект в верхней части окна &automanag;, вызовите контекстное меню групп в нижней части и выберите Remove.

## Проблемы компиляции

- ## Wrong `autoconf` version и т.д. Ошибка

  Есть несколько сообщений об ошибке относительно устаревших версий autoconf и т.д. приводящих к неправильной работе `configure`. Запустите `autoreconf` в каталоге с файлами `configure.in`. Эта команда попытается обновить информацию о файлах Сборочной системы &GNU;. Для подробностей см. `man autoreconf`.

## Разработка ПО в UNIX

### Исторические примечания

С самого начала, программы в UNIX разделились на два разных типа. Один — это мир языков программирования системы и приложений, где некоторый исходный код транслируется в машинный транслирующей программой, компилятором или интерпретатором. Примером является язык программирования C. UNIX была первой ОС, написанной на таком языке высокого уровня (относительно), вместо ассемблера, ориентированного на конкретную машину (на самом деле одним из изначальных назначений языка C было написание ядра UNIX и вспомогательных программ на машинах DEC PDP-11).

Второй — это мир скриптов. Он развился с приходом оболочки UNIX (shell), которая была интерфейсом пользователя к ОС — и в то же время языком программирования очень высокого уровня. Скрипты используют набор маленьких утилит, таких как `grep`, `sed` и `find`, каждая из которых создана для конкретной задачи. Хитрость заключается в том, что любая такая программа может быть соединена с другой посредством простого транспортного механизма, который называется канал, суть его заключается в том, что он перенаправляет вывод одной программы на ввод другой. Это есть основа многофункциональности и гибкости инструмента.

С течением времени, оба мира бурно развивались. Язык C до сих пор используется преимущественно как системный язык программирования, тогда как C++ — дальнейшее, но уже не кросс-платформенное, развитие C — с начала 90-ых используется при объектно-ориентированном программировании сложных систем. Кроме того есть поддержка многих других языков программирования, даже таких, как FORTRAN77 и Ada, которые всё ещё используются в некоторых программах.

### Современные скриптовые языки

Ну а в мире скриптов произошла перестановка, от оболочки, исходящей из концепций портативности, до языков, которые унифицируют всю общее-необходимую функциональность в их стандартных библиотеках, оставляя возможность прибегать к конвейерному механизму.

Общее всех этих скриптовых языков — их портативность между клонами UNIX, &Microsoft; &Windows;, &Mac; OS, или даже VMS. Также, все они имеют свои свободно распространяемые реализации.

#### &perl;

&perl; популярен как язык обработки текста и, следовательно, системного администрирования. На заре World Wide Web, CGI-скрипты на &perl; использовались для генерирования динамический web-страниц на основе базы данных. Сегодня такой метод реализован как модуль `mod_perl` web-сервера &apache;. Среди сильных сторон &perl;'а — его встроенная поддержка расширенных регулярных выражений и богатый архив свободных модулей к нему, для подробностей см.: CPAN.

#### Python

&python; отличается элегантностью классовой системы, лёгкостью и гибкостью, с которой можно внешние библиотеки могут быть подключены — к ним можно обращаться как к стандартным классам и функциям &python;. В отличие от &perl;, &python; имеет прозрачное и сжатое встроенное API, что делает его прекрасным средством поддержки скриптов для программ, написанных на C и C++, .

#### PHP

&php; является языком, встраиваемым прямо в HTML-страницы, и следовательно применяется для генерирования динамических страниц web.

### Интерфейс DCOP

Другой ветвью развития скриптов UNIX является протокол DCOP. DCOP расшифровывается как Desktop COmmuniсation Protocol (протокол связи рабочих станций). Он реализован как простой механизм IPC/RPC, построенный для оперирования сокетами. Словом, он обеспечивает удобства схожие с традиционным конвейерным механизмом UNIX.

Традиционные скрипты основываются на очень маленьких программах, которые были созданы для работы на строго текстовой основе. DCOP позволяет графическим программам связываться между собой схожим путём. Т.е. одна &kde;-программа может посылать сообщения другой (возможно своей копии), и сама получать и обрабатывать данные от неё.

Однако у такого метода всё же есть и недостатки — для использования DCOP в программу нужно встроить специальный код интерфейса DCOP. Кроме того, связь DCOP происходит несколько медленно, хотя, в свою очередь, даёт мощь и гибкости скриптов UNIX высокоуровневым программам с графическим пользовательским интерфейсом.

Для подробностей см. справочник API библиотеки &kde; DCOP: The DCOP Desktop COmmunication Protocol library.

### Системы сборки

Кроме очень простых случаев, ваш проект будет состоять из множества блоков исходного кода, разделённых по нескольким файлам для удобства сопровождения. Для преобразования исходного кода в машинный, нужно транслировать всё это в несколько машинных модулей в удобном для чтения операционной системой формате.

Для этого минимум требуется

- текстовый редактор — для написания исходного кода,

- транслирующая программа, обычно это компилятор, — для преобразования исходного кода в объектные файлы,

- библиотекарь — для сборки объектных файлов в библиотеки для последующего их использования без необходимости перекомпилирования,

- компоновщик — связки нескольких объектных файлов и библиотек в один исполнимый файл,

- система сборки, претендующая на управление всем этим "добром", и

- отладчик — чтобы найти (надеемся) все ошибки в исходных кодах, и, возможно, другие диагностические утилиты для последующей оптимизации кода.

Когда у вас имеется большой проект, состоящий из возможно сотен исходных файлов, процесс компиляции может быть медлительным. Не нужно компилировать заново все файлы когда был изменён только один, вместо этого следует компилировать файлы, которые были затронуты изменениями. На самом деле это не так очевидно, как кажется на первый взгляд. Например, если вы изменили прототип функции в заголовке, нужно перекомпилировать каждый файл, включающий этот заголовок.

#### Процесс сборки

Инструмент, выполняющий перекомпиляцию называется `make`. Его работа управляется специальными правилами, которые описывают необходимые действия в случае изменения определённой информации (обычно объектного файла или файла исходного кода). Все правила, принадлежащие определённому проекту записываются в т.н. `Makefile`, который обрабатывается командой `make` в любое время когда вы хотите обновить вашу работу.

Каждое правило состоит из нескольких сборочных блоков, а именно

- целевого (target), т.е. файла, который нужно собрать

- набора зависимостей, обычно это имена файлов, от которых зависит целевой (target), например это может быть имя исходного файла, где целевой будет упомянут как объектный,

- команд, которые выполняются для сборки целевого файла (например его компиляции или компоновки нескольких объектных файлов).

Обычно команда `make` читает правила, одно за другим, проверяет каждый файл из списка зависимостей конечного файла и собирает его заново если хотя бы один файл из списка зависимостей был изменён.

В больших проектах `Makefile` может стать очень большим и сложным. Мы не можем здесь углубляться в подробности, однако рекомендуем вам изучить хотя бы основы синтаксиса `make`. Даже если вы не используете его напрямую, понимание принципов системы сборки вам должно пригодиться. Для подробностей см. GNU Make Manual.

Для подробностей, касающихся &kdevelop;, см. главу Сборка и управление проектом.

Доступно несколько руководств, см. в главе Сборка и управление проектом.

### Объектно-ориентированное программирование

Разработчики программного обеспечения вынуждены создавать не только библиотеки и алгоритмы, но и удобный пользовательский интерфейс, гибкий и интуитивный. Однако большинство программистов не удаляют этому большого внимания, и, как результат, хорошие программы имеют бедный дизайн.

На протяжении годов, были выработаны некоторые общие принципы реализации интерфейса. Настоятельно рекомендуется придерживаться их. Таким образом ваши пользовательские интерфейсы будут сохранять общий вид и интуитивность, что непременно будет оценено пользователями.

Визуальная разработка &kde; также имеет свои принципы. Их можно найти на странице принципов пользовательского интерфейса в уголке разработчика &kde;.

### Концепции и средства интегрирования: IDE

Для каждого этапа процесса программирования существует множество отдельных инструментов — планирование, редактирование, управление файлами и компилирование (сборка), отладка, документирование и т.д. Однако по мере роста проекта, он (почти всегда) становится громоздким, и процесс его дальнейшего программирования становится затруднительным.

Наиболее повторяющаяся работа проделывается при проектировании, компилировании и отладке программы. Большую часть такой работы можно автоматизировать используя шаблоны и скрипты. Другую большую часть — наличием инструментов. способных связываться один с другим через общий визуальный интерфейс (GUI). К примеру, действительно удобно, когда отладчик может открыть исходный код в редакторе и расположить курсор в месте, где произошла ошибка.

Такую схему совершенствуют интегрированные среды разработки (IDE). Они собираю воедино все шаблоны, инструменты и скрипты, необходимые для продуктивного процесса разработки.

Для всевозрастающей платформы &kde; таким IDE является &kdevelop;. Эта среда разработки содержит широкий набор инструментов, обеспечивая простое окружение разработки и сопровождения ПО, использующего разные языки программирования и платформы.

#### Основные возможности &kdevelop;

- Управление всеми средствами разработки на языке C++, такими как компилятор, компоновщик, отладчик и система сборки

- Мастер приложений, упрощающий создание новых программ

- Интегрированный редактор, основанный на редакторе для программистов KWrite или QEditor от Trolltec

- Генератор классов, для создания новых классов и интегрирования их в проект

- Управление исходными, заголовочными файлами, документацией и т.д.

- Помощь при написании руководства приложения средствами KDE

- Автоматическое генерирования API-документации в формате HTML, включающей описания классов проекта и перечня используемых библиотек

- Поддержка интернационализации, KBabel

- Поддержка управления проектом через CVS

- Встроенная отладка

- Консоль

- Подсветка синтаксиса

- Автодополнение кода для переменных класса, его методов, аргументов функций и т.п.

- Шаблоны для конкретных задач (написание модулей KControl, Kicker, KIO, Konqueror, а также стилей рабочего стола)

- Четыре дерева информации, для наглядного разделения исходных, заголовочных файлов, классов и документации, что позволяет отказаться от внешнего проводника

- Кросс-компилирование, с возможностью указания разных компиляторов, их ключей, архитектуры процессора и т.п.

- Поддержка проектов Qt/Embedded (таких как Zaurus и iPAQ)

- Простота использования внешних программ, в виде добавления их в меню Сервис

## Установка &kdevelop;

Здесь описаны все этапы сборки и установки&kdevelop;:

- Как получить &kdevelop; содержит информацию по загрузке последней версии &kdevelop; в виде исходников из CVS.

- Требования — список программ и библиотек, необходимых при компиляции &kdevelop;.

- Сборка и установка проведёт вас через все этапы компилирования и установки &kdevelop;.

- Где взять API-документацию рассказывает что такое API как вам получить удобный инструмент для навигации по исходникам &kdevelop;.

### Как получить &kdevelop;

&kdevelop; доступен в собранном виде во многих дистрибутивах &Linux;, таких, как SuSE, ASPLinux, Mandrake и других, чаще всего в виде пакета RPM, для упрощения процесса установки.

Также вы можете загрузить исходники &kdevelop;, собрать и установить их самостоятельно: http://www.kdevelop.org или ftp-сервер &kde;.

#### Получение ежедневных снимков &kdevelop; из &CVS;

Доступен анонимное &CVS;-хранилище: имя модуля — kdevelop на `:pserver:anonymous@anoncvs.kde.org:/home/kde`.

##### Первоначальная загрузка файлов (checkout)

Для получения первоначальной версии &kdevelop;, загрузите его (checkout) с анонимного &CVS;. Предположим, вы хотите расположить копию &kdevelop; в каталоге `kde3src`.

- `~>` `mkdir kde3src`
- `~>` `cd kde3src`
- `~/kde3src>` `cvs -z3 -d :pserver:anonymous@anoncvs.kde.org:/home/kde co kdevelop`
- `~/kde3src>` `cd kdevelop`

Теперь вы можете скомпилировать &kdevelop;, как показано в главе Сборка и установка &kdevelop; chapter.

После полной загрузки исходных файлов &kdevelop; из &CVS;, вы можете постоянно иметь их последние версии путём обновления, что и описано в следующем разделе. Пожалуйста, не загружайте каждый раз все файлы заново!

##### Поддержка локальной &CVS;-копии

После успешной загрузки (и сборки) &kdevelop; из CVS, можно поддерживать вашу локальную копию исходников в соответствии с &CVS;, чтобы, например, сразу иметь доступ ко всем новым функциям и исправлениям ошибок. Для этого (опять же таки предполагается, что исходники &kdevelop; расположены в каталоге `kde3src`):

Обратите внимание на использование ключа `up` (update) вместо `co` (checkout).

- `~>` `cd kde3src`
- `~/kde3src>` `cvs -z3 -d :pserver:anonymous@anoncvs.kde.org:/home/kde up kdevelop`
- `~/kde3src>` `cd kdevelop`

Следите за сообщениями &CVS; в процессе обновления, т.к. от этого зависят конкретные шаги сборки.

После обновления исходников &kdevelop;, его нужно собрать как описано в главе Нюансы сборки из &CVS;.

### Требования &kdevelop;

Для успешной сборки и последующего использования &kdevelop;, необходимо установить следующие программы и библиотеки. Обычно они поставляются с дистрибутивами, а значит установить их можно просто.

### Требуется:

- gcc/g++ 2.95.3 и выше (или совместимый)

- &gnu; make (или совместимый)

- &perl; 5.004

- autoconf 2.52 и выше

- automake 1.6.1 и выше

- flex 2.5.4

- Qt 3.0.3 и выше

- KDE 3.0.4 и выше

### Необязательно:

- Средство навигации по исходным кодам ctags, с http://ctags.sourceforge.net, добавляющее быстрое обращение к декларациям и определениям несколькими щелчками мыши на имени в редакторе.

- dot, генератор изображений, с http:/www.graphviz.org. Он нужен для &doxygen;, чтобы наглядно отображать классовую иерархию.

- Средство документирования &doxygen;, с http://www.doxygen.org, с помощью которого вы сможете сгенерировать сжатую и мощную документацию API-функций вашего проекта

- valgrind с http://developer.kde.org/~sewardj/ поможет найти утечки памяти в вашем приложении.

- CVS с http://www.cvshome.org для использования системы конкурирующих версий &CVS;.

- Любой другой компилятор и/или инструмент если вы разрабатываете ПО на языке/платформе, отличных от C++/&kde;.

1. Вы можете обойти требования &autoconf; >= 2.52 м &automake; >= 1.6.1. Просто удалите подкаталог `admin` в установочном каталоге &kdevelop; и введите

   `(каталог-kdevelop)>` `ln -s $KDEDIR/share/apps/kdelibs/admin admin`

   в консоли. При этом &kdevelop; будет использовать стандартные настройки в &kde;-каталоге `admin` .

2. Убедитесь, что вы не смешиваете разные версии &qt;. Всегда направляйте &kdevelop; на версию &qt;, с которой была собрана библиотека &kde;. Иначе вы можете получить очень странное поведение программы.

### Сборка и установка &kdevelop;

#### Подготовительные шаги

Перед переходом к сборке, убедитесь, что все библиотеки и инструменты доступны сборочной (make) системе. Для достижения этого, нужно правильно выставить переменные окружения. Шаги, которые следует выполнить при этом, зависят от используемой оболочки ("shell").

Чтобы не вводить все необходимые операторы по определению переменных окружения каждый раз, вы можете записать их в `.bashrc` или `.cshrc`. таком образом переменные будут устанавливаться в нужное значение каждый раз при входе в систему.

##### Оболочка bash

Если вы используете оболочку bash, добавьте в её конфигурационный файл такие строки:

    export KDEDIR=(каталог-kde3)
    export QTDIR=(каталог-библиотеки-qt)
    export LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH
    export LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH
    export PATH=$QTDIR/bin:$KDEDIR/bin:$PATH

##### Оболочка tcsh

Если вы используете оболочку tcsh, добавьте в её конфигурационный файл такие строки:

    setenv KDEDIR (путь-к-kde3)
    setenv QTDIR (путь-к-библиотеке-qt)
    setenv LD_LIBRARY_PATH $QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH
    setenv LIBRARY_PATH $QTDIR/lib:$KDEDIR/lib:$LIBRARY_PATH
    setenv PATH $QTDIR/bin:$KDEDIR/bin:$PATH

#### Сборка &kdevelop;

Далее подразумевается, что исходники &kdevelop; расположены в каталоге `~/kde3src/kdevelop`.

##### Особенности сборки из &CVS;

Если вы собираете &kdevelop; со снимка &CVS;, начальные шаги сборки зависят от того, загрузили ли вы все файлы вновь (checkout), или обновили загруженные ранее (update).

##### После CVS-checkout

Запустите сборочную систему:

`~/kde3src/kdevelop>` `make -f admin/Makefile.common cvs-clean`

и выполните все следующие шаги.

##### После обновления CVS

Следующий шаг зависит от вывода команды обновления &CVS;. Если в нём было что-то типа

    U /некий_каталог/Makefile.am

или просто выполнили полную загрузку (checkout), выполните следующее:

`~/kde3src/kdevelop>` `make -f Makefile.cvs`

перед продолжением выполнения всех следующий шагов.

##### Команды сборки `make`

Теперь вы должны решить, какую систему &kdevelop; вы хотите использовать. Следующий шаг состоит из генерирования `Makefile`, который будет использоваться командой `make`.

Вы можете убрать ключ `--prefix` в следующих строках `configure`, в этом случае &kdevelop; будет установлен в каталог &kde;. Для подробностей см. Примечания по ключам `configure`.

##### Версия с отладочной информацией

Если вы хотите следить, за тем, &kdevelop; делает во время выполнения, выберите версию с отладочной информацией. Просто укажите скрипту `configure` сделать так:

`~/kde3src/kdevelop>` `./configure --enable-debug=full --prefix=(путь-к-kde3)`

##### Финальная версия

Если вы хотите просто использовать &kdevelop; как есть (с меньшим размером и более быстрой работой), оставьте в `configure` значения по умолчанию.

`~/kde3src/kdevelop>` `./configure --prefix=(путь-к-kde3)`

Если вы хотите собрать API-документацию для &kdevelop; самостоятельно, вам нужно указать ключ в команде запуска `configure`:

`~/kde3src/kdevelop>` `./configure --(options-as-above) --with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs`

##### Make и install

Скрипт `configure` проверит систему и создаст `Makefile`, который будет использовать команда `make`.

`~/kde3src/kdevelop>` `make`

Далее войдите в систему под правами суперпользователя.

`~/kde3src/kdevelop>` `su`

Установите программу:

`~/kde3src/kdevelop>` `make install`

Если &kdevelop; установлен в главный каталог &kde;, вы можете сразу запустить IDE. Иначе — потребуются некоторые дополнительные шаги. Для подробностей см. Нестандартный каталог установки.

#### Сборка на FreeBSD

При сборке и установке &kdevelop; на ОС FreeBSD, перед стандартными шагами

`~/kde3src/kdevelop>` `make -f Makefile.cvs`

выполните следующее:

`~/kde3src/kdevelop>` `export CXXFLAGS="-L/usr/X11R6/lib -I/usr/local/include/db41 -I/usr/local/include -L/usr/local/lib -I/usr/X11R6/include"`

При этом вам необходима база данных berkeley db 4.1, если у вас другая версия, подправьте команду.

##### Проверка версии Berkeley DB

Для этого выполните:

`~>` `pkg_info | grep db41`

Это должно вернуть что-то типа:

    db41-4.1.25_1       The Berkeley DB package, revision 4.1

##### Другие изменения

Измените строку

`ac_cv_bdb=no`

на

`ac_cv_bdb=yes`

в файле `configure`, иначе библиотеки базы данных не будут найдены.

Т.к. команда `make -f Makefile.cvs` пересоздаёт файл `configure`, вам придётся проделывать такие изменения каждый раз.

Составители FreeBSD переименовали `libdb.so` в `libdbxx.so`. Следовательно, замените

`libkdevcatalog_la_LIBADD = -ldb`

на

`libkdevcatalog_la_LIBADD = -ldb41`

in `lib/catalog/Makefile.am`.

Далее вы можете продолжить обычными шагами `configure` и `make`, как показано выше.

#### Примечания по ключам `configure`

##### Нестандартный каталог установки

По умолчанию IDE устанавливается в каталог &kde;. Это необходимо &kdevelop; требуется прямой доступ к некоторым утилитам и модулям, расположенным в этом каталоге. Чтобы использовать другой каталог для установки, укажите в скрипте `configure` ключ `--prefix`:

`~/kde3src/kdevelop>` `./configure --prefix=(путь-к-kde3)`

И всё же устанавливать программу в другой каталог не рекомендуется. Конечно, вы можете сделать это, но тогда вы получите очень ограниченную функциональность. Перед запуском &kdevelop; из командной строки, выполните следующие команды.

(обратите внимание на множественное число: KDEDIRS, не KDEDIR)

- `(каталог-kdevelop)>` `export KDEDIRS=/usr/local/kde:/opt/kde3`
- `(каталог-kdevelop)>` `kbuildsycoca`

в оболочке tcsh определение переменных окружения происходит таким образом:

`(каталог-kdevelop)>` `setenv KDEDIRS /usr/local/kde:/opt/kde3`

Команда `kbuildsycoca` (build system control cache) выполняет поиск библиотек и записывает их размещение и версию в кэш, чтобы &kdevelop; смог их найти. Это займёт некоторое время - и это нужно выполнять каждый раз перед запуском &kdevelop; из оболочки, если вы установили программу в нестандартный каталог. Конечно, из этих команд можно составить скрипт и запускать только его.

(кроме того можно дополнить файлы `.bashrc` или `.cshrc`, но это не желательно, т.к. команда будут выполняться при каждом входе в консоль.)

Команду `kbuildsycoca` не нужно выполнять с правами суперпользователя. И вообще, заниматься разработкой под root не очень хорошая идея!

##### Другие ключи

(... в процессе написания ...)

### Где взять API-документацию &kdevelop;

API — сокращение от Application Program Interface (программный интерфейс приложения). Он являет собой набор описаний, по которым приложение обращается к операционной системе и другим службам. API приложения &kde; или &Qt; — собрание интерфейсов классов и методов, которые используются для навигации по исходникам программы.

Последняя версия API-документации находится на домашней странице KDevelop. Она обновляется каждые 24 часа.

Чтобы собрать собственную API-документацию из исходников &kdevelop;, при сборке программы, запустите `configure` с ключом:

`~/kde3src/kdevelop>` `./configure --(options-as-usual) --with-kdelibsdoxy-dir=$KDEDIR/share/doc/HTML/en/kdelibs-apidocs`

(`make` заменит `$KDEDIR` на каталог, где установлен &kde;). Затем запустите `make` как обычно. После сборки &kdevelop;, можно также собрать документацию API. Для этого выполните

`~/kde3src/kdevelop>` `make apidocs`

Это создаст `Doxyfile` в базовом каталоге &kdevelop;, который нужно передать на обработку программе doxygen. Это приведёт к созданию большого количества файлов `.html`. После окончания процесса сборки, нужно установить документацию. Зарегистрируйтесь в системе как суперпользователь

`~/kde3src/kdevelop>` `su`

Затем:

`~/kde3src/kdevelop>` `make install-apidox`

После этого, `make` сообщит каталог, где вы сможете просматривать документацию API.

## Обзор – Возможности &kdevelop;

&kdevelop; объединяет большое количество инструментов, скриптов и шаблонов в общий интерфейс. Он состоит из

- нескольких режимов интерфейса, содержащих предустановки рабочей области,

- мастера приложений, упрощающего создание нового проекта,

- нескольких систем управления проектом, упрощающих сборки и управление вашим проектом,

- некоторых средств редактирования для простой и наглядной работы с исходными кодами программы

- различных обозревателей файлов, представляющих вашу файловую систему в разных видах,

- различных обозревателей классов, которые помогут поддерживать классы и их отношения в объектно-ориентированном программировании,

- отладочного интерфейса для поиска и устранения ошибок прямо в &kdevelop;,

- нескольких модульных инструментов, которые могут быть загружены в любое время по запросу.

- набора других вспомогательных инструментов для диагностика, документирования и оптимизации

### Интерфейсы

В &kdevelop; есть четыре различных режима интерфейса (нажмите на названии чтобы просмотреть изображение с его примером):

- Дочерние окна

  - Все средства обзора размещены как дочерние окна непосредственно в главном окне.

  - Окна обзора и редактирования будут выглядеть как обычные отдельные окна внутри рабочей области.

- Вкладки

  - Все средства обзора размещены как дочерние окна непосредственно в главном окне.

  - Окна обзора и редактирования будут совмещены в одно окно с соответствующими вкладками.

- Отдельные окна

  - Окна инструментов, обзора и редактирования будут выглядеть как обычные отдельные окна на рабочем столе.

  - Главный элемент управления будет содержать только меню, панели инструментов и состояния.

- IDEAl

  Это новый интерфейс, оптимизирующий организацию рабочей области и интуитивного доступа к инструментам.

  - Все инструменты размещены по краям рабочей области в окнах с несколькими вкладками и сгруппированы по их назначению.

  - Окна инструментов, обзора и редактирования будут собраны в одно окно со вкладками.

#### Как переключить интерфейс

Чтобы переключить режим интерфейса, выберите меню Настройка Настроить KDevelop... . В появившемся диалоге Customize KDevelop выберите Пользовательский интерфейс в поле слева.

Выбор режима интерфейса

Выберите режим и нажмите OK

1. Если вы переключаетесь из или в IDEAl (стандартного), вам нужно будет перезапустить &kdevelop;.

2. Есть два типа режима IDEAl — оконный и стандартный (нижний ряд переключателей). Оконный тип находится на уровне с другими режимами, но всё ещё остаётся экспериментальным. И всё же на текущий момент рекомендуется использовать именно этот тип режима IDEAl.

#### Как увеличить рабочее пространство

Для увеличения рабочего пространства можно перейти в полноэкранный режим, скрыть меню, и, как и в любом другом приложении KDE, панели инструментов.

#### Полноэкранный режим

Для переключения в (или из) этот режим, выберите меню Вид Полноэкранный режим , или нажмите Ctrl Shift F . Кроме того значок этого режима есть на панели инструментов Обзор.

#### Скрытие и отображение меню

Чтобы скрыть меню, выберите Настройка Отображать меню , или нажмите Ctrl M . Чтобы вернуть меню, нажмите Ctrl M , или воспользуйтесь кнопкой Отображать меню.

### Элементы интерфейса

(... в процессе написания ...)

### Системы управления проектом

Обычно, проекты основываются на определённой системе управления. &kdevelop; предлагает четыре системы управления проектом, которые можно выбрать при создании проекта.

- Automake использует стандартные инструменты разработки &gnu;.

- QMake использует менеджер проектов trolltech.

- ANT использует менеджер проекта Apache ANT для Java

- Специальный позволит вам писать файлы `Makefile` самостоятельно.

#### Automake

Проекты, созданные с менеджером проектов &automanag; упрощают использование стандартных инструментов разработки &GNU;. Это —

- лучший способ создания `Makefile` и

- хороший и надёжный способ адаптации под разные системы с помощью создаваемого командой autoconf скрипта `configure`.

#### QMake

Разработчикам, пользующимся гибкостью и удобством &qt; qmake, &kdevelop; предлагает возможность управлять проектами, основанными на qmake (*.pro) через GUI.

Более подробную информацию о менеджере проектов QMake можно найти в Руководстве пользователя qmake, которое должно быть включено в ваш дистрибутив, или же зайдите на страницу документации TrollTech.

#### ANT

Разработчики, предпочитающие Java возможно захотят использовать менеджер проектов Apache ANT. Для создания Ant-проекта в &kdevelop; выберите Project New Project... Java Ant Project Application.

Для подробностей см. домашнюю страницу проекта Apache Ant.

#### Специальный

Если вы предпочитаете писать/изменять `Makefiles` собственноручно, выберите этот тип.Это пригодится в проектах с нестандартной структурой, или если вы полностью хотите держать под контролем процесс `сборки`.

Если вам не нужна дополнительная гибкость, обратите внимание на Autoproject или другой менеджер проектов, т.к. они упрощают процесс сборки и подготовки к распространению.

#### Распространение вашего приложения

Для распространения ваших программ, на конечной системе не требуется ничего кроме

- соответствующего компилятора,

- компоновщика и

- библиотек разработки (devel),

что часто нужно хотя бы для приложений C++. Но вы также можете сразу распространять двоичные пакеты вашего приложения. В этом случае наличие &kdevelop; на конечной системе не требуется.

При распространении исходников вашего проекта, мы рекомендуем включать в них также и файл проекта &kdevelop;. Это упростит изменение исходных файлов другими разработчиками, если они также используют &kdevelop;.

Для проектов с несколькими разработчиками, работающими в разных местахes, это необходимо в любом случае.

Особенно в случае интернациональных программ, когда переводчику требуется работать с исходным кодом только для корректировки некоторых его участков для полной локализации.

## Настройка &kdevelop;

(... в процессе написания ...)

### Общая настройка

(... в процессе написания ...)

### Расширенная настройка

(... в процессе написания ...)

## Начало – Мастер программ

В &kdevelop; разработка ПО организована проектами. Проект содержит всё, что относится к данному заданию на программирование: исходные файлы, дополнительные файлы данных, средства управления, в т.ч. система сборки, доступ ко всем компонентам и к любым дополнительным инструментам, словом всё, что нужно для получения реально работающей программы.

Такая организация позволяет легко переключаться между глобальными заданиями. Это очень удобно, если вы работаете над несколькими приложениями одновременно. что бывает очень часто. Откройте проект в &kdevelop; и вы сразу сможете продолжить работу над ним с того места, где остановились в прошлый раз.

### Новые проекты

При создании нового проекта нужно выполнить множество формальных процедур. Как то указание папки проекта, определение файлов с заголовками и исходным кодом, первоначальная настройка сборочной системы.

&kdevelop; обеспечивает простой способ создания нового проекта — Мастер приложений. Его можно запустить из меню Проект Создать.

Мастер приложений значительно упрощает и автоматизирует создание нового проекта

1. На этапе Выбора языка программирования вы также можете использовать один из предлагаемых шаблонов программы.

2. Затем следует ввод некоторой общей информации, как то название приложения, каталог его исходников и т.д.

3. Теперь решите, будете ли вы использовать систему контроля версий, такую, как, например, CVS, и, если будете, введите требуемые данные.

4. Выберите шаблоны для начальных заголовочных и исходных файлов (если есть).

5. Теперь осталось сгенерировать начальные файлы, структуру каталогов, начальные заголовочные и исходные файлы и служебные файлы для управления проектом, например каркас для make.

Voilà — и это всё. Теперь у вас есть база для начала продуктивной работы.

А теперь рассмотрим это более подробно...

#### Первоначальные шаги

Чтобы создать новый проект, выберите пункт Создать проект из меню Проект:

первый шаг создания проекта

Диалог разделён на две части В верхней вы можете выбрать язык программирования, который будет использоваться для написания программы, а в нижней помещена некоторая общая информация.

##### Выбор языка программирования и типа приложения

Вверху справа находится список доступных языков программирования, например:

- Ada

- C

- C++

- Fortran

- Java

- PHP

- Pascal

- Perl

- Python

- Ruby

- Shell

Выбор определённого языка программирования приводит к доступности соответствующих ему шаблонов, которыми вы можете воспользоваться как отправной точкой.

При выборе шаблона отображается его краткое описание и снимок экрана главного окна приложения, основанного на выбранном шаблоне.

Выберите шаблон, наиболее отвечающий вашим целям. Затем введите общую информацию, как описано ниже.

##### Указание общей информации

В нижней части страницы Общее диалога создания нового проекта можно указать его свойства — данные для построения структуры проекта.

##### Название приложения

Введите его в верхнее поле свойств с соответствующим названием.

Обратите внимание, что в названии разрешается использовать только такие символы:

- буквы в нижнем и верхнем регистрах

- цифры

- символ подчёркивания

Эти ограничения введены т.к. указанное название будет использовано для именования некоторых классов.

##### Каталог проекта

Также название проекта будет использовано при формировании каталога приложения.

Название проекта переводится в нижний регистр и добавляется к стандартному пути.

Если сформированный по названию проекта путь уже существует, кнопка Далее > будет неактивна (серого цвета), и мастер вас известит об этом ещё и сообщением.

##### Начальный путь

Есть два способа выбрать другой каталог для вашего приложения — выбрать для него другое имя или путь.

Это можно установить во втором ряду свойств, под названием Location. Здесь вы должны ввести путь к каталогу, в котором будет создан подкаталог с именем проекта (в котором, в свою очередь, будут созданы другие каталоги разработки). Результирующий каталог для наглядности будет отображён в поле Final location.

Мастер приложений автоматически скопирует начальное значение в поле Location. Оно определяется из поля Default projects directory на этапе базовой конфигурации.

Убедитесь, каталог разработки, отображаемый в поле Final location не существует в вашей файловой системе.

Тем временем путь, указанный в поле Location должен существовать. Если это не так, мастер приложений сообщит об этом добавлением (неправильно) в строку Final location.

##### Личная информация

Заполните приведённые здесь поля если вы хотите, чтобы все знали имя создателя программы.

1. Мастер приложений пытается заполнить их значениями, взятыми из соответствующих разделов центра управления KDE.

2. Личная информация будет встроена в выбранный шаблон. Например в для KDE C++ вы сможете найти её в начале `main.cpp`.

3. Из всех полей, необязательным является E-mail, т.к. не все разработчики могут иметь доступ к Сети.

##### Версия и лицензия

Введите номер версии, с которого нужно начать, и лицензию в соответствии с которой вы хотите распространять ваше приложение.

Если вы выбрали тип приложения (напр. C/C++), к которому существуют шаблоны, далее вы можете просмотреть информацию о лицензии (для подробностей см. Выбор шаблонов заголовочных/исходных файлов).

Если вы выбрали другую лицензию, вам нужно будет ввести её текст самостоятельно.

Информация о версии и используемой лицензии также будет встроена в выбранный шаблон, в форме, лёгкой для изменения.

Нажмите кнопку Далее >.

#### Выбор системы контроля версий

Здесь вы можете выбрать систему контроля версий.

Здесь всё зависит от проекта, подробности о CVS вы можете найти в главе Использование CVS.

#### Система контроля версий не нужна

Если вы не хотите использовать эту функцию, просто нажмите Далее >.

#### Использование CVS

На данный момент доступна только одна система контроля версий — &cvs;.

Настройка CVS для вновь созданного проекта

Система контроля версий, такая как &CVS; (Concurrent Versions System, система конкурирующих версий) записывает копии файлов проекта в некоторое подобие базы данных. В &CVS; вы можете закачать файлы (commit) в хранилище, или загрузить их обратно (checkout/update). Особенностью системы контроля версий является структурный метод хранения файлов, который всегда позволяет вернуться к более раннему состоянию разработки, если вы допустили неисправимые ошибки. &CVS; также позволяет сотрудничать нескольким разработчикам в большом проекте (как &kdevelop;) не вмешиваясь в работу друг друга.

#### CVS Root

&cvs; ведёт собственную базу данных версий ваших файлов, которая хранится в т.н. корне &cvs; (&cvs; root). Вам нужно будет указать путь к этому корневому каталогу.

Локальный корневой каталог &cvs;. Если вы разрабатываете программу самостоятельно, локальная база данных &cvs; пригодится как удобная система резервного копирования. Обычно она располагается в вашем домашнем каталоге, под именем `cvsroot`:

``/home/devel/cvsroot`` (где `devel` — имя пользователя в системе)

Это краткая форма -- на самом деле перед ней должна быть приставка `:local:`. Использование краткой формы разрешено только если она начинается со слэша (`/`). Т.е. полный адрес локального каталога &cvs; (local &cvs; root) будет выглядеть так: `:local:/home/devel/cvsroot`

Введите путь к корневому каталогу &cvs;, установленному в вашей системе. В принципе, вы можете выбрать любое имя, даже использовать несколько баз данных &cvs;, но мы рекомендуем придерживаться уже установленного корневого каталога &cvs;.

Инициализация нового корня &cvs;. Если корень &cvs; не существует, &kdevelop; может изменить это с помощью команды &CVS;. Для этого отметьте Init root ниже поля CVS root.

&kdevelop; только передаёт команды системе &CVS;, не делая ничего самостоятельно. К счастью, &cvs; продуман достаточно хорошо, и, перед созданием нового корня &cvs; в указанном вами каталоге, проверяет наличие в нём уже существующего корня &cvs;. Следовательно, если вы оставили включённым параметр Init root тогда как уже имели инициализированный корень &cvs;, ничего страшного не произойдёт.

Удалённый корневой каталог &cvs;.. Возможно вы захотите расположить хранилище на удалённом сервере, особенно если над проектом работает несколько разработчиков. Тогда введите URL корня &cvs; в поле CVS root. Например, чтобы подключиться к &cvs;-серверу &kde;:

``:pserver:mylogin@cvs.kde.org:/home/kde`` (где `mylogin` соответствует имени регистрации вашей учётной записи &cvs; в репозитории &kde;)

#### Виды удалённых серверов &cvs;

Есть два типа удалённых серверов &cvs;, это pserver, использующий авторизацию без шифрования, и ext, в котором доступно шифрование rsh или ssh. Они различаются по приставке в URL:

`:pserver:`

для password protected server

`:ext:`

для шифрования rsh или ssh. Например:

``:ext:mylogin@cvs.cervisia.sourceforge.net:/cvsroot/cervisia``

позволит получить доступ к корню &cvs; популярного интерфейса &cvs;, Cervisia.

Если вы хотите использовать сервер &cvs; с шифрованием rsh или ssh, укажите протокол шифрования. Введите `rsh` или `ssh` в поле CVS_RSH в диалоге создания нового проекта, на странице Система контроля версий.

Если вы собираетесь использовать шифрование, прочитайте главу Использование CVS.

#### Хранилище &cvs;

Теперь нужно указать где следует сохранять файлы проекта в корне &CVS;. это место называется хранилищем (repository).

В принципе, вы можете выбрать любое имя для хранилища &cvs;, учитывая лишь ограничения на имена файлов, но большинство разработчиков просто указывают название программы. Хранилище, с указанным вами именем, будет создано в корне &cvs;.

Введите имя хранилища, которое вы хотите использовать в поле Хранилище CVS диалога создание нового проекта, на странице Система контроля версий.

Обратите внимание, на то, что нельзя использовать уже существующее хранилище! Система &CVS; сообщает только о конфликтах, так что вы можете потерять файлы с не уникальным именем!

#### Остающиеся поля

Осталось совсем немного. Остальные поля заполнены за вас автоматически:

Поле Vendor используется только для совместимости. Вы можете оставить значение по умолчанию.

Поле Message содержит комментарий, который будет добавлен к первой версии файлов в хранилище &cvs;.

Поле Release tag содержит тег (ветку) &CVS;, с которым выйдет первый выпуск вашего приложения. С помощью тега вы всегда сможете вернуться к состоянию разработки на данный момент. Для подробностей см. Использование CVS.

По умолчанию предлагается тег start.

Если какая-либо информация введена неправильно, это выясниться на последнем этапе создание проекта. Поэтому следите за сообщениями, которые отображаются в это время. Если произошли ошибки &CVS;, вы увидите что-то на подобие этого:

    * cd '/home/devel/test' && cvs -d '/home/devel/mycvsroot' \
      import -m 'new project' '' 'vendor' 'start' &&\
      sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
      '/home/devel/mycvsroot'
    * cvs [import aborted]: /home/devel/mycvsroot/CVSROOT: No such file or
      directory
    * *** Exited with status: 1 ***

Если это произошло, инициализируйте &cvs; самостоятельно, или удалите каталог проекта и начните процесс создание проекта сначала.

После ввода всех данных &CVS;, нажмите Далее >.

Чтобы исправить ошибку на предыдущей странице, нажмите кнопку < Назад.

#### Выбор шаблонов заголовочных/исходных файлов

В последующих страницах мастера вы сможете установить общую информацию о вашем проекте, которая будет включаться во все его файлы.

Для некоторых языков программирования всё ещё нет готовых шаблонов.

Если этот шаг был пройден, в начале исходных файлов будет добавлен комментарий о лицензии, например для программ на C++ он будет выглядеть так:

    /***************************************************************************
     *   Copyright (C) 2003 by Your Name                                       *
     *   you@you.com                                                           *
     *                                                                         *
     *   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.,                                       *
     *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
     ***************************************************************************/

Другие шаблоны будут иметь подобную информацию в оформлении, соответствующем выбранному языку программирования.

На основе данных, введённых в мастере создания проектов, в т.ч. поля Автор и E-mail, информации о лицензии, шаблоны исходных файлов будут дополнены соответствующим кодом.

##### Изменение шаблонов

Шаблоны, которые вы выбираете в диалоге Создания нового проекта будут использованы при добавлении нового исходного и/или заголовочного файла в проект. В начале каждого файла будет расположена некоторая информация, зависящая от шаблона.

Вы не ограничены вставкой обычного текста, &kdevelop; распознаёт несколько переменных, которые будут заменены на некоторую, неизвестную заранее, информацию. В частности это может быть информация обо авторе, E-mail и лицензии.

##### Включение информации для &doxygen;

Если, например, вы хотите чтобы API-документация, генерируемая программой &doxygen;, содержала также дополнительное краткое описание файла, включите в шаблон такой код:

    /**
     * \file $MODULE$.cpp
     * \brief (здесь нужно поставить краткое описание файла).
     **/

И каждый раз, когда вы будете создавать новый исходный файл, &kdevelop; заменит `$MODULE$` именем создаваемого файла. Например, если вы создали новый класс C++ с именем `ASimpleTest`, в начале файла `asimpletest.cpp` будет такой текст:

    /**
     * \file asimpletest.cpp
     * \brief (здесь нужно поставить краткое описание файла).
     **/

И теперь только будет оставаться ввести краткое описание после слова \brief, не вводя служебного, каждый раз одинакового, кода.

##### Файл с лицензией

Также вы можете включить информацию о лицензии. Для этого используется переменная `$LICENSEFILE$`:

    //   See $LICENSEFILE$ for the full license text.

Мастер приложений заменит `$LICENSEFILE$` на имя файла, содержащего лицензию, например:

    //   See COPYING for the full license text.

для лицензии GPL, или

    //   See LICENSE.BSD for the full license text.

если вы решили распространять свою программу под лицензией BSD

&kdevelop; распознаёт много больше переменных. Для подробностей см. Изменение шаблонов в главе Средства правки.

Шаблоны, которые вы установили здесь, будут задействованы после создания проекта. Информация, выбранная вами, будет находится в начале каждого созданного в рамках проекта файла.

#### Построение начальных файлов проекта

Теперь почти всё сделано. На последней странице кнопка Далее > сменяется на Готово.

Подумайте дважды перед её нажатием! Вы пока ещё имеете возможность вернуться < Назад и изменить введённые данные. Если вы используете локальный CVS, проверьте ещё раз имя хранилища (указанного каталога не должно существовать).

Чтобы отменить создание проекта, нажмите соответствующую кнопку, иначе, нажмите Готово, при этом в окне Сообщения будут выводится подробные действия, выполняемые мастером приложений.

Если вы выбрали использование &CVS;, после создания дерева каталогов проекта, будет запущена программа &CVS;, очищающая предыдущее содержимое окна сообщений.

В режиме интерфейса IDEAl, окно сообщений может быть закрыто автоматически после выполнения всех действий, если вы не зафиксировали его.

Не забудьте проверить предлагаемые по умолчанию мастером приложений значения. Например, вы можете изменить комментарии, добавляемые в начало исходных файлов. Шаблоны вашего проекта находятся в подкаталоге `templates` базового каталога вашего проекта.

Затем, перед вводом какого-либо кода, откомпилируйте новый проект. В большинстве случаев при этом проблем возникнуть не должно. Чтобы начать всё заново, удалить каталог проекта и его хранилище в корне &CVS; (если таковой имеется) и начните создание нового проекта заново.

Перед компиляцией вашего проекта в первый раз, зайдите в Проект Build Configuration. Там будет три вида компиляции: default, optimized и debug.

Из-за некоторых ограничений в текущей установке autoconf/automake, не используйте default. это приведёт к повреждению внутренней структуры каталогов, и вы не сможете использовать предустановку optimized и debug.

Если тип приложения, которое вы выбрали, предлагает только default, естественно используйте его.

### За упаковкой

Никогда не помешает следить за выводом и пытаться понять, что происходит.

Если ваш проект настроен на локальный &CVS;, сначала будут отображаться сообщения о создании проектных файлов, а затем, с нового экрана, сообщения &CVS;.

Возможно вы не успеете прочитать журнал выполнения на всех двух этапах.

Тогда просмотрите сообщения этапов::

- Инициализация проекта и

- Инициализация &CVS;.

#### Инициализация проекта

Если вы инициализировали проект YourNewApplication, будут выведены такие сообщения(нажмите на строке для перехода к её описанию):

    * perl /opt/kde3/share/apps/kdevappwizard/template-kapp/script \
      --author='Your Name' \
      --email='you@you.com' \
      --version='0.1' \
      --appname='YourNewApplication' \
      --dest='/home/devel/yournewapplication' \
      --source='/opt/kde3/share/apps/kdevappwizard' \
      --license='GPL' \
      --licensefile='COPYING' \
      --filetemplates='h,/tmp/kde-devel/kdevelopcDE5Ja.tmp,\
                       cpp,/tmp/kde-devel/kdevelopsRrLab.tmp'
    * Making destination directory
    * Installing file templates
    * Installing license file
    * Installing admin directory
    * Installing GNU coding standard files
    * Installing Docbook template
    * Installing project file
    * Installing application framework
    * Installing application sources
    * Finished
    * *** Success ***

#### Вызов скрипта &perl;

Как видно, &appwizard; создал скрипт на &perl; на основе введённых вами данных в диалоге создания нового проекта. `script` расположен в каталоге, определяемом шаблоном.

В нашем случае `script` находится в `/opt/kde3/share/apps/kdevappwizard/template-kapp/`. Просто замените `/opt/kde3/` на каталог, куда установлен &kde; в вашей системе.

Скрипт вызывается с набором параметров (с приставкой `--`), через которые передаётся введённая вами информация.

Конкретные действия инициализации зависят от вызываемого скрипта.

Установочные скрипты используют подпрограммы на &perl;, собранные в файле `kdevelop.pm`, который вы можете найти в подкаталоге `share/apps/kdevwizard/template-common/` установочного каталога &kde;.

#### Базовый каталог приложения

При выполнении скрипта &perl;, будут выведены сообщения о том, что будет сделано на следующем этапе. Прежде всего будет создан `конечный каталог`. Это базовый каталог вашего приложения, именно его имя отображалось в строке Final location диалога создания нового проекта, на странице Общие. Скрипт использует значение, передаваемое параметром `--dest`.

#### Шаблоны файлов

Далее, выбранные вами шаблоны будут скопированы в подкаталог `templates` конечного каталога проекта.

В нашем случае это будет `templates/h` для заголовочных и`templates/cpp` для исходных файлов C++.

#### Файл лицензии

На странице Общие вы выбрали лицензию, по которой хотите распространять вашу программу. В соответствии с этим информация о лицензировании будет добавлена во все шаблоны вашего проекта, а в базовый каталог проекта будет скопирован файл с текстом лицензии.

Параметр `--licensefile` передаёт `скрипту` имя этого файла. В нашем случае это `/home/devel/yournewapplication/COPYING`.

#### Каталог администрирования

&kdevelop; требуется некоторый набор файлов для управления проектом. Они находятся в подкаталоге `admin` базового каталога проекта.

На этом этапе мастер приложений создаёт каталог `admin` и распаковывает в него стандартный набор файлов администрирования из архива `share/apps/kdevappwizard/template-common/admin.tar.gz` (в каталоге &kde;).

Для создания каталога `admin` и его содержимого параметров не требуется.

#### Стандартные файлы &gnu;

Для согласования со стандартами &gnu;, программы должны распространяться с некоторыми файлами. Скрипт &perl; распаковывает эти файлы из `share/apps/kdevappwizard/template-common/gnu.tar.gz`, находящегося в каталоге &kde;, и подстраивает их под данные, введённые вами в диалоге создания нового проекта.

После этого этапа вы найдёте следующие файлы в базовом каталоге вашего приложения:

- `AUTHORS`, изначально содержащий данные, переданные параметром `--author` и `--email`.

- `COPYING`, текст общедоступной лицензии &gnu;, по которой распространяются все приложения &gnu;.

- `ChangeLog`, изначально пустой — записывайте здесь все большие изменения в вашей программе.

- `INSTALL` содержит общие инструкции по установке — измените его если для установки вашего приложения понадобятся какие-либо специальные действия.

- `README`, изначально пустой — сохраните в нём информацию, которую пользователь должен знать перед установкой.

- `TODO`, изначально пустой — используйте его для протоколирования ваших планов по дальнейшей разработке проекта. Распространение этого файла вместе с программой даст пользователям возможность узнать что вы хотите сделать и не отправлять лишние пожелания, кроме того возможно кто-нибудь захочет вам помочь и возьмётся за реализацию ваших планов.

#### Начальная документация проекта

Каждый вновь созданный проект будет содержать шаблон DocBook, на основе которого вы сможете документировать вашу программу. Скрипт &perl; создаст в базовом каталоге приложения подкаталоги `doc` и `doc/en` с шаблоном `doc/en/index.docbook` и файлами &automake; `Makefile.am`, на основе которых &kdevelop; сможет собрать справочную систему.

#### Файл проекта

Файл проекта содержит всю глобальную информация проекта, необходимую &kdevelop;. На этом этапе и создаётся такой файл для вашего приложения. Для подробностей см. сообщения скрипта &perl;.

Файл управления проектом &kdevelop; копируется из каталога шаблонов, где и находится скрипт &perl;. В нашем случае копируется файл `share/apps/kdevappwizard/template-kapp/app.kdevelop`, а затем изменяется в соответствии с введёнными вами данными.

Он сохраняется под именем `/home/devel/yournewapplication/yournewapplication.kdevelop`, имеет формат XML, поэтому его можно легко просмотреть в Kate или в любом другом редакторе.

#### Структура приложения

К этому времени вы уже подготовили дерево каталогов для расположения в них исходных и прочих служебных файлов. Это называется структурой приложения. Она зависит в основном от типа приложения, которое вы выбрали в диалоге создания нового проекта.

В нашем случае, структура каталога `/home/myusr/yournewapplication/` будет такой:

- Каталог `src` предназначен для хранения исходных файлов вашего приложения.

- Каталог `debug` предназначен для откомпилированных с отладочной информацией файлов проекта. Для подробностей см. Конфигурации сборки.

- Каталог `optimized` предназначен для откомпилированных файлов проекта с оптимизационной конфигурацией.

- Каталог `po` предназначен для файлов локализации. В нём хранятся `.po`-файлы (файлы с переводом, Portable Object) и `.pot`-файлы (шаблоны перевода). Эти файлы можно изменять с помощью программы KBabel.

Сначала все эти каталоги содержат только файлы `Makefile` и другие служебные файлы &kdevelop;. Кроме того, в каталоге `src` вы найдёте стандартные значки для вашего приложения. Например, это может быть `src/hi16-app-yournewapplication.png` и `src/hi32-app-yournewapplication.png`.

#### Создание исходников приложения

В соответствии со структурой приложения, начальные исходные файлы будет созданы в подкаталоге `src`. Их тип зависит от Create New Project dialog. You will soon see yourself as this is the stuff you will actually have to work on.

#### Инициализация &CVS;

Теперь давайте обратим внимание на сообщения, выводимые при продолжении построения проекта мастером приложений. Если на первом этапе не произошло никаких ошибок, окно сообщений очистится и будет отображать протокол инициализации локального хранилища &cvs;.

Некоторые неважные строки опущены (там где . . .):

    * cd '/home/devel/yournewapplication' \
      && cvs -d '/home/devel/cvsroot' \
             import -m 'new project' \
                    'YourNewApplication' \
                    'vendor' \
                    'start' \
      && sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . \
                                                     'YourNewApplication' \
                                                     '/home/devel/cvsroot'
      . . .
    * N YourNewApplication/NEWS
    * N YourNewApplication/TODO
    * N YourNewApplication/README
      . . .
    * N YourNewApplication/admin/configure.in.bot.end
    * N YourNewApplication/templates/h
    * N YourNewApplication/templates/cpp
    *
    * No conflicts created by this import
    *
    * *** Success ***

Мастер приложений запускает &cvs; с некоторыми параметрами, перед этим перейдя в базовый каталог приложения.

#### Построение хранилища &cvs;

Далее вызывается программа &CVS; для импорта начального содержимого проекта в хранилище.

- `-d '/home/devel/cvsroot'` — параметр `-d` передаёт корень &CVS;. В нашем случае — это `/home/devel/cvsroot`.

- `import` — какое действие выполнять, аргументы:

  - `-m 'new project'` — параметр `-m` импортирует некоторый текст сообщения для этого действия. он будет сохранён в базе данных может быть вызван для определения (описания) изменений, которые были сделаны на данном этапе. В нашем случае это `new project`, что говорит о первом добавлении файлов в базу данных.

  - `'YourNewApplication'` — второй параметр передаёт имя несуществующего хранилища.

  - `'vendor'` — следующий аргумент — тег, символическое имя, отмечающее некоторый набор файлов в каталоге. Есть несколько значений, которые может принимать тег (см. Использование CVS), он отмечает целый набор файлов, которые будут когда-либо сохранены в этом хранилище.

  - `'start'` — другой тег, отмечающий выпуск, кратко говоря набор файлов проекта на определённой стадии разработки.

#### Импортирование файлов

Программа &CVS; создаст хранилище и начнёт импортировать в него все файлы из `/home/devel/yournewapplication`. Буква `N` в начале строки в окне сообщений предшествует импортируемому файлу.

Мы оставили только первые и последние три таких сообщения.

#### Сообщение об успешном окончании операций &CVS;

&CVS; почему-то всегда выводит что-нибудь, даже если операция была произведена успешно.

Процессе выполнения могут возникнуть определённые ошибки, например при конфликте файлов при добавлении файлов в старое хранилище. &CVS; проверяет содержимое файла по некоторому формальному критерию.

#### Установка записей администрирования &cvs;

На этом операция импорта в &CVS; заканчивается. Хранилище установлено и все файлы в него занесены. Теперь осталось создать служебную информацию для&CVS;.

Если бы мы имели дело с "чистым" &CVS;, для записи файлов в текущем каталоге, нужно было бы ввести специальные служебные данные. Например, можно выполнить check out в пустой каталог, и в нём, при этом, автоматически будут созданы служебные файлы &CVS;.

С &kdevelop; поставляется скрипт `buildcvs.sh`, который можно найти в каталоге `/opt/kde3/share/apps/kdevcvs/` (где `/opt/kde` - каталог, куда установлен &kde;). Он вызывается Мастером приложений после завершения работы &CVS;.

Скрипт `buildcvs.sh` Создаёт подкаталог `CVS` в каждом каталоге приложения. В каждом из них по три файла:

- `Root` содержит имя сервера, где расположен корень &cvs;. В нашем случае это локальный `/home/devel/cvsroot`. Желательно не менять &cvs;-корень приложения, т.к. версии файлов в нём хранятся не отдельно, а лишь с данными различий (diff). Т.е. сначала полностью записывается первоначальная версия файла, а затем сохраняются лишь различия новой версии с предыдущей.

- `Repository` предназначен для того же. &CVS; хранит имя используемого хранилища, в нашем случае это `YourNewApplication`.

- `Entries` содержит имена и некоторую другую информацию о файлах каталога. Этот файл может быть полезен, если вы хотите записывать в хранилище не все файлы, расположенные в данном каталоге.

Все вышеперечисленные файлы необходимы, т.к. работа &CVS; является по-каталоговой. Скрипт `buildcvs.sh` просто сканирует каждый каталог приложения и заносит все найденные файлы в хранилище (в соответствии с файлом `CVS/Entries`.

Скрипт выполняется без сообщений.

### Существующие проекты

#### Импорт существующих проектов

Чтобы импортировать существующий каталог в &kdevelop;, выберите Import Existing Directory в меню Проект:

##### Диалог импорта каталога

#### Конвертация старых проектов KDevelop

&kdevelop; может открывать проекты KDevelop 2.xи конвертировать их в новый формат. Для этого откройте проект, выбрав фильтр Проекты KDevelop 2. После этого проект автоматически конвертируется в новый формат.

### Краткий обзор опций проекта

(... в процессе написания ...)

## Средства редактирования

### Комбинации клавиш

Далее следует список стандартных комбинаций клавиш редактора.

Left | Переместиться на один символ влево
Right | Переместиться на один символ вправо
Ctrl Left | Переместиться на одно слово влево
Ctrl Right | Переместиться на одно слово вправо
Up | Переместиться на одну строку вверх
Down | Переместиться на одну строку вниз
PgUp | Переместиться на одну страницу вверх
PgDn | Переместиться на одну страницу вниз
Ctrl PgUp | Переместиться в начало файла
Ctrl PgDn | Переместиться в конец файла
Home | Переместиться в начало строки
End | Переместиться в конец строки

Если к приведённым выше комбинациям клавиш добавить Shift, при перемещении курсора будет также выделяться текст, через который курсор проходит при перемещении.

Backspace | Удалить один символ слева
Delete | Удалить один символ справа (под курсором)
Ctrl C | Копировать выделенный текст в буфер обмена
Ctrl V | Вставить выделенный текст из буфера обмена
Ctrl X | Копировать выделенный текст в буфер обмена и затем удалить его
Ctrl Z | Отменить последнее действие
Shift Ctrl Z | Повторить последнее отменённое действие

### Отчёт об ошибках

(... в процессе написания ...)

### Поиск в текущем документе и файлах

#### Поиск текста

Ctrl F- Найти Ctrl R- Найти и заменить

#### Пошаговый поиск

Традиционный поиск через Правка Найти требует указания искомого отрывка текста полностью. Однако значительно быстрее искать текст пошаговым поиском — нажмите кнопку ISearch на панели инструментов и начинайте вводить искомый текст. По мере того, как вы будете вводить новые буквы, каждый раз будет выполняться их поиск. Обычно искомое место в документе находится уже после 3-4 нажатий.

#### Grep

Оба описанных выше поиска ограничены текущим файлом. Для поиска сразу в нескольких файлах, воспользуйтесь пунктом Поиск в файлах... меню Правка. при этом будет вызван графический интерфейс к команде &grep;(1).

Здесь вы можете выбрать маску файлов, в которых будет производиться поиск, и другие средства по уменьшению количества сканируемых файлов.

Искомый текст может быть регулярным выражением с синтаксисом стандарта POSIX. Например вы можете использовать `"\<K.*"` если хотите найти все слова, начинающиеся с буквы K. Следующие символы являются служебными:

`.` | Любой символ
`^` | Начало строки
`$` | Конец строки
`\<` | Начало слова
`\>` | Конец слова
`?` | Предшествующий пункт совпадает меньше, чем один раз
`*` | Предшествующий символ отсутствует или присутствует один или несколько раз
`+` | Предшествующий символ присутствует один или более раз
`{n}` | Предшествующий символ присутствует ровно n раз
`{n,}` | Предшествующий символ присутствует n или более раз
`{,n}` | Предшествующий символ присутствует n или менее раз
`{n,m}` | Предшествующий символ присутствует от `n` до `m` раз

Обратное отношение к подвыражениям в скобках также доступно через нотацию `\n`.

Для программирующих на C++ есть специфические шаблоны. Например для поиска всех вызовов всех элементарных функций определённого объекта.

После запуска поиска, но будет производится внешним, асинхронным процессом. Все найденные элементы будут отображены в Grep. Чтобы перейти к просмотру файла, щёлкните на нём. Помните, что файлы сортируются по их физическому расположению. Если найденный файл уже открыт в редакторе (и изменён), могут быть несоответствия в номерах строки. Для предотвращения этого сохраняйте все файлы перед поиском.

### Завершение кода

(... в процессе написания ...)

### Создание новых файлов и классов

(... в процессе написания ...)

#### Изменение шаблонов

(... в процессе написания ...)

## Обзор файлов

В левой части главного окна &kdevelop; могут отображаться разнообразные списки и структуры файлов:

- ## Дерево файлов

  Наглядное отображение иерархии файлов проекта. При щелчке на файле он будет открыт в редакторе. Не-текстовые файлы открываются в приложениях, сопоставленных с их MIME-типом.

  Дерево файлов обновляется при каждом изменении файловой системы (в пределах каталога проекта). Например, если вы создадите новый файл или каталог (программой отличной от &kdevelop;), это отразится на списке. На операционный системах отличных от Linux, или на файловой системе NFS, каталоги обновляются через некоторые промежутки времени.

  Файлы, не представляющие интереса, не отображаются. Однако в File views в Project options, вы можете изменить это указанием своих масок файлов для фильтрования (разделяя их запятыми).

  Более того, вы можете ограничить отображаемые файлы принадлежащими к текущему проекту. Для этого воспользуйтесь контекстным меню корневого элемента дерева файлов.

  ### Снимок экрана дерева файлов

- ## Файловые категории

  Здесь отображаются файлы проекта, сгруппированные по расширению. При щелчке на файле он будет открыт в редакторе.

  Категории файлов, отображаемые в Обозревателе файлов, можно настроить в настройках проекта. Сканируя каталог, &kdevelop; ищет категорию, к которой подходит текущий файл, а найдя такую, поиск останавливается. Т.е. в конце списка должны быть категории с наиболее общими масками, а в начале -- с более специфическими. Например, звёздочка должны быть в конце.

## Обзор классов

При разработке объектно-ориентированного приложения, ударение ставится не на именах исходных файлов, а на классах и их соотношениях. Чтобы помочь вам перемещаться по области определённых классов и идентификаторов, &kdevelop; предоставляет различные обозреватели классов, наглядно представляющие структуру классов разными способами.

### Обзор классов

в левой части рабочей области расположен список классов, переменных и функций вашего проекта. Они представляются в виде дерева. При щелчке на классе, отдельной его веткой отобразится список всех его методов и атрибутов.

#### Снимок экрана с обзором классов

Обзор классов может работать в двух режимах. По умолчанию, все идентификаторы сгруппированы по классам, структурам, функциям, переменным и пространствам имён. В контекстном меню вы можете выбрать сортировку по пространствам имён. В этом режиме отображается иерархия пространств имён и идентификаторы сгруппированы в соответствии пространству имён, в котором они определены. Это может быть более полезным в проектах, широко использующих пространства имён.

Через контекстное меню вы также можете изменить метод отображения имён классов, чтобы они отображались с пространством имён, в котором они определены. Это поможет различить вам одноимённые классы из разных пространств. Если вы в обычном режиме задержите мышь на имени класса, в подсказке будет отображено полное имя класса.

Щелчок на классе или методе приведёт к переходу к его определению. Вы также можете перейти к декларации метода через контекстное меню. В том же меню пункты Add method.. и Add attribute... приводят к открытию диалогов, где вы сможете создать новые методы и переменные, в соответствующем классе.

### Инструментарий классов

Диалог классов открывается по правому щелчку по классу в окне обозревателя классов и выбору пункта Class tool....

### Иерархия классов

(... в процессе написания ...)

## Документирование

К несчастью, написание документации часто бывает сложнее написания кода. Но продуманно организованная и понятно написанная, она представляет собой наиболее значительную помощь, позволяющую не обращаться лишний раз за советом на форумы, или, что ещё лучше, к автору..

Документирование имеет несколько граней. Это

- внутренняя документация проекта, состоящая в основном из

  - комментариев в исходных файлах

  - внутренняя документация API, генерируемая специальными инструментами, такими как &doxygen;

- внешняя документация проекта

  - внешняя документация API, например по функциям библиотек (KDE, Qt и т.д.)

  - другая документация (HowTo, общая системная информация)

Документация должна быть удобна и легко доступна, когда она понадобится. &kdevelop; предлагает гибкое решение для этого.

### Обзор документации

#### Снимок экрана структуры документации

## Сборка и управление проектом

Здесь затрагиваются только компилируемые языки, такие как C++, Java, фортран.

В руководстве затронуты такие темы:

- Краткое описание &automanag;,

- Использование менеджера Automake содержит основы работы &automanag;,

### Краткое описание &automanag;

(эту главу написал Ian Wadham, ianw@netspace.net.au)

В главе Системы сборки был изложен краткий обзор систем сборки, часто использующихся в UNIX. Здесь они рассматриваются подробнее.

Существует некоторая неразбериха с тем, как называть программы такого типа. GNU, в описаниях Automake, Autoconf и Libtool, называет их системами сборки (build systems). QMake называет себя средством для написания файлов Makefile для разных компиляторов и платформ (a tool to write Makefiles for different compilers and platforms) . В KDE также часто используется термин системы управления проектом (project management systems). Мы будем использовать последний для обозначения встроенных окружений в &kdevelop;, которые организуют и собирают проекты. В этой секции, однако, он будет использоваться в смысле автоматизированные системы сборки.

#### Потребность в автоматизированных системах сборки

Если у вас простая программа Hello World, написанная на чистом C, вы можете скомпилировать и скомпоновать её с помощью `gcc` `-o hello hello.c` и запустить командой `./hello`, так что вам даже не и не нужен `Makefile`.

Если же у вас программа, написанная на C, с несколькими модулями и заголовочными файлами, и вы сделали её исключительно для себя, вам будет нужен простой `Makefile`, который легко написать собственноручно (см. `info Make`).

Проблемы возникают когда:

- Ваш исходный код, документация, графическое оформление, звуки, файлы интернационализации, файлы с информацией и т.д. расположены в более чем одном каталоге,

- У вас иерархическая структура каталогов с исходниками,

- Вы используете библиотеки, не являющиеся стандартными библиотеками набора &UNIX;, такие как &Qt; или библиотеки &kde;,

- Вы используете пред-процессор для генерирования части исходного кода, например, MOC pre-compiler от Qt,

- Вы хотите распространять ваше приложение в Сети, для людей с другим дистрибутивом &UNIX;/&Linux;, набором программного и аппаратного обеспечения,

- Вам нужна автоматическая установка и удаление установленной программы,

- Вы хотите сделать своё приложение частью &kde;.

Если хотя бы одна из перечисленных ситуаций применима к вам, тогда вам потребуется система сборки. В примере выше мы использовали `gcc` для компиляции и сборки программы Hello World, но не все компиляторы C имеют название `gcc`. Так что, если вы будете распространять своё приложение, вполне может найтись человек, имеющий другой компилятор в своей системе. И здесь на помощь приходят файлы Makefile, содержащие такие данные, как, например, имя компилятора в данной системе.

Система сборки заботится о том, чтобы ваше приложение можно было автоматически скомпилировать на любой совместимой платформе.

- Она найдёт расположение библиотек,

- скомпилирует и

- установит компоненты вашего приложения

- в корректные каталоги системы

Коротко, система сборки предлагает простой и безопасный метод компилирования и установки вашего приложения в конечной системе. как было сказано выше, &kdevelop; поставляется с тремя автоматизированными системами сборки и возможностью создавать файлы Makefile вручную:

- Automake, использующий стандартные инструменты разработки &gnu;.

- QMake, использующий менеджер проектов trolltech.

- ANT, использующий менеджер проекта Apache ANT (для Java)

- Специальный позволит вам писать файлы `Makefile` самостоятельно.

Один из этих вариантов вам нужно будет выбрать при создании нового проекта, и выбор будет трудно сменить позже, так что заранее определите, какая система сборки наиболее подходит вам.

#### Руководства по Autoconf/Automake/Libtool

Доступно несколько руководств по системе сборки &GNU; (`Autoconf`, `Automake` и `Libtool`), используемой менеджером &automanag;.

- Краткое руководство autoconf, написанное Кристофером Картисом, и доступное на домашней странице KDevelop. В нём делается акцент на основные этапы редактирования `Makefile`.

- Более подробное руководство можно найти на . Это часть большого сборника руководств сайта Разработка ПО с GNU.

- Книжку про Autoconf, Automake, and Libtool можно найти по адресу . Это наиболее полное введение в &GNU; Autotools.

#### Что делает &automanag;?

Мастеру приложений потребуется инициализировать файлы `Makefile.am` при создании проекта, использующего Систему сборки &GNU;, например C++ KDE. В процессе разработки, &automanag; создаёт файлы `Makefile.am` для проектов, использующих Систему сборки &GNU;, и сопровождает их.

В каждом каталоге вашего проекта, содержащего файлы, которые требуется компилировать или устанавливать, находится один файл `Makefile.am`. В нём находятся указания ко компиляции, сборки и установке, а также список подкаталогов, также имеющих `Makefile.am`.

Каталоги вашего проекта и исходники могут быть разбросаны в структуре любой глубины, или же в подкаталогах одного уровня.

Цель Системы сборки &GNU; — создать структуру исходников, которую можно скомпилировать, построить и установить на любой системе &UNIX; или &Linux;, используя простые команды:

    ./configure
    make
    make install    # с правами "root".

и удалить установленную программу командой `make uninstall` (также от root).

Как это работает? `configure` — это скрипт, который

- собирает информацию о системе, на которой работает, например, какой компилятор в ней установлен и какие библиотеки доступны и где, а потом

- рекурсивно создаёт файлы `Makefile` используя `Makefile.in` как шаблон.

Файлы `Makefile.in` — это входные файлы, шаблоны с базовой информацией для файлов `Makefile`, которые будут созданы из них путём заполнения в них определённой, зависимой от системы, информации. Всё это происходит под управлением `Automake`.

Процесс перехода от `Makefile.am` (`.am` означает шаблон Automake) к `Makefile` управляется &promanag;, через утилиту `Autoconf`, макрос `M4` и пр.

Когда выполняется `make`, он автоматически собирает информацию об окружении, такую как путь к компиляторам и библиотекам. Аналогично, `make install` перемещает компоненты приложения, такие как исполнимые файлы, документацию, в корректные места окружения.

Если вы распространяете ваше приложение как tarball (архив, который можно создать в KDevelop), в нём будут включены файлы `Makefile.in` и скрипт `configure`, чтобы его можно было собрать и установить на системе, где нет `Automake`, `Autoconf` или KDevelop. Файлы `Makefile.am` также включаются, для того случая, когда потребуется безболезненно вмешаться в исходный код.

Правила усложняются если вы также распространяете программу через хранилище, основанное на web, такое как KDE CVS.

#### Подытожим возможности Automake Manager

- Генерирование файлов `Makefile.am` в подкаталогах (называемых subprojects).

- Обновление файлов `Makefile.am` при изменении структуры проекта.

- Обновление файлов `Makefile.am` при добавлении или удалении файлов из проекта.

- Настройка параметров сборки или установки отдельных файлов, изменение `Makefile.am` в соответствии с этим.

- Настройка параметров, используемых при сборке и установке (например имена библиотек).

#### Содержание файлов Automake

Файл `Makefile.am` содержит строки с именами переменных, знаком равно и списком файлов или значением параметра. Имена переменных состоят из двух частей, например `bin_PROGRAMS`, `myapp_SOURCES` или `kdelnk_DATA`. Вторая часть называется первичной (primary) и представляет что-то, что нужно собрать или установить. Первая часть называется приставкой (prefix) и представляет:

- Каталог, куда нужно устанавливать (например `bin`),

- Спецификатор (например `myapp` для `SOURCES`, это говорит о том, что исходные файлы, перечисленные поле `myapp_SOURCES` входят в сборку `myapp`),

- Специальная приставка `noinst` (no installation), используется для перечисления заголовочных файлов (`.h`),

- Специальная приставка `EXTRA` для вещей, зависящих от конфигурации системы.

Для подробностей о `Automake` и файлах `Makefile.am` см. `info Automake`.

&automanag; создаёт и обновляет переменные и их значения. Далее приведён пример `Makefile.am` для приложения с названием `myapp`.

    ## Makefile.am для myapp

    # устанавливаемая программы.  её имя используется
    # для всех переменных Makefile.am
    bin_PROGRAMS = myapp

    # путь include для X, qt и KDE
    INCLUDES = $(all_includes)

    # пути к библиотекам.
    myapp_LDFLAGS = $(KDE_RPATH) $(all_libraries)

    # библиотеки, с которыми компоновать.
    myapp_LDADD   = $(LIB_KFILE) $(LIB_KDEPRINT)

    # что компилировать для myapp
    myapp_SOURCES = main.cpp myapp.cpp myappview.cpp

    # заголовки
    noinst_HEADERS = myapp.h myappview.h

    # разрешить automoc обрабатывать все исходные meta файлы (moc)
    METASOURCES = AUTO

    KDE_ICON = myapp

    # куда пойдёт файл kdelnk
    kdelnkdir = $(kde_appsdir)/Utilities
    kdelnk_DATA = myapp.desktop

    # куда пойдёт XML-GUI файл ресурсов
    rcdir = $(kde_datadir)/myapp
    rc_DATA = myappui.rc

    AM_CXXFLAGS = -DMY_C++_PREPROCESSOR_OPTION

Как вы видите, большинство пунктов справа — набор символов в форме `$(xxxx)`. Это переменные окружения, определённые в собственно окружении &kde;. Они заменяются действительными значениями когда `./configure` генерирует файлы `Makefile` из шаблонов.

Также, команда `./configure --help` отобразит список вещей, которые вы можете изменить во время сборки/компиляции. В частности, команда:

    ./configure --prefix=/где/вы/желаете

будет перенаправлять устанавливаемые файлы куда вы захотите, сменой значения внутренней переменной `$(prefix)` на `/где/вы/желаете`.

### Использование менеджера Automake

(эту главу написал Ian Wadham, ianw@netspace.net.au)

В этой главе вы найдёте краткое описание элементов &automanag; и как их использовать. В частности:

- Окно &automanag; описывает структуру окна &automanag;.

- Overview Window описывает элементы верхнего окна.

- Detail View Window описывает элементы нижнего окна.

- Навигация по &automanag; содержит список основных действий, которые вы можете выполнять в &automanag;.

- Контекстные меню в &automanag; описывает окна, появляющиеся после выбора какого-либо действия в &automanag;.

#### Окно &automanag;

| &automanag; запускается в отдельном окне. Верхняя часть называется Overview, а нижняя — Detail View. Между ними располагается узкая панель, которую можно перетаскивать для регулировки размеров верхнего и нижнего окон. В режиме IDEAl можно также изменять ширину окна. Вверху каждого окна есть панель инструментов, кнопки на которой активируются, когда выбирается элемент из списка в окне. роме того действия над элементами можно совершать через их контекстные меню. В режиме IDEAl также есть две дополнительные кнопки, слева на заголовке окна – треугольная стрелка вправо и точка. Первая закрывает окно, а вторая сохраняет его открытым даже если активировано другое окно &kdevelop; (иначе окно &automanag; будет автоматически закрыто сразу после передачи фокуса на другое окно).

#### Окно Overview

Окно Overview содержит древовидный списокa каталогов вашего проекта, содержащих программные файлы, документацию или другие данные. В каждом из них находится файл `Makefile.am`, называемый в &automanag; подпроектом (subproject). Как показано на рисунке, есть три стандартных подпроекта:

- `src` – исходники вашего приложения,

- `doc` – руководство приложения (Handbook),

- `po` – файлы перевода, содержащие перевод всей текстовой информации вашего приложения (например, заголовки окон, пункты меню, названия кнопок).

Обратите внимание, что `doc` всегда содержит подкаталог `en`. Это потому, что основной язык документации KDE — английский (en). Если ваше приложение станет частью KDE, команды перевода KDE переведёт его с английского на другие языки, размещаемые в других каталогах, например `ru` (русский) или `uk` (украинский). Сообщения в файле `po` также будут переведены, что позволит использовать ваше приложение людям, не знающим английский.

Подкаталоги `doc` и `po` служат для разных целей. `doc` содержит документацию, такую как руководство, `po` содержит сообщения для перевода пользовательского интерфейса, встроенного в исходники данного приложения.

Окно Overview также служит как средство навигации. Если вы выберите подпроект, подробности о нём будут отображены в окне Detail View.

#### Окно Detail View

Окно Detail View содержит древовидный список файлов подпроекта, выделенного в окне Overview, а также правила компиляции, сборки и установки для них.

#### Цели

Древовидный список в Detail View имеет два уровня. Верхний состоит из т.н. целей (target) &automanag;, и нижний содержит списки файлов, составляющие каждую цель.

Принцип цели &automanag; отличается от цели `Makefile`. Коротко:

- Определение способа компиляции, сборки и установки набора файлов, известно как цель в &automanag;, и как переменная в `Automake`.

- Цель в `make` — параметр команды `make` (например `make install`, `make clean`).

  Тем не менее, все переменные файла `Makefile.am` представляютподцель (sub-target) в `make`.

#### Навигация в &automanag;

При щелчке в окне Overview или Detail View на + или -, рядом с именем подпроекта или цели, приведёт развёртыванию или свёртыванию дерева.

#### открытие файла для правки

При щелчке на файле в Detail View, он откроется в окне редактирования KDevelop.

#### Активирование кнопок &automanag;

При щелчке на имени подпроекта в окне Overview или цели в Detail View, активируются некоторые кнопки панели инструментов.

Рекомендуется использовать контекстные меню вместо панели инструментов, т.к. так легче видеть и понимать что вы делаете.

Действия над подпроектами и целями широко действуют на структуру, компиляцию, сборку и установку вашего приложения.

#### Контекстные меню

В контекстном меню подпроекта, цели или файла можно выбрать действия над ним, например добавить цель в подпроект, добавит или удалить файл в цель (из цели).

#### Контекстные меню &automanag;

Далее изложен обзор контекстных меню &automanag;. Более подробное их описание вы найдёте в следующей главе.

##### Контекстное меню файла

На рисунке ниже, выбран значок `hi-16app-myapp.png` из цели Icon data in myapp подпроекта myapp/src.

| Действие по умолчанию — Удалить файл из цели. Подменю CVS содержит действия над файлом, касающиеся CVS. Открыть в позволяет открыть файл любой командой (например, в нашем случае, мы можем открыть значок в KIcon). Perforce — проприетарный пакет, аналогичный CVS.

##### Контекстное меню цели

На рисунке ниже, выбрана цель myapp (Program in bin) подпроекта myapp/src.

| Options только для целей, содержащих исходные файлы. Вы сможете указать ключи компоновщика и пути, по которым производить поиск библиотек, а также вы можете указать список библиотек, с которыми нужно компоновать ваше приложение. Create New File приведёт к созданию нового файла. Add Existing Files приведёт к добавлению файла. The Remove приведёт к удалению цели и всех её файлов с диска. Make Target Active только для целей, содержащих исходные файлы. Активирует текущую цель — новые файлы всегда добавляются в неё Build Target приведёт к сборке текущей цели.

##### Контекстное меню подпроекта

Меню подпроекта позволяет делать большие изменения в структуре вашего проекта, а также способ его компиляции, сборки и установки.

| Options содержит параметры компиляции, сборки и установки проекта. В появившемся диалоге будут вкладки Compiler, Includes, Prefixes и Build Order. Add Subproject создаст новый подкаталог в структуре проекта и начальный файл Makefile.am. Add Target откроет диалог, где вы сможете установить правила компиляции, сборки и установки файлов подпроекта. Add Service (... в процессе написания ...) Add Application (... в процессе написания ...) Add Existing Subprojects (... в процессе написания ...) Remove Subproject — правильный способ удаления подпроекта. При этом также "подправятся" файлы `Makefile.am`. Кроме того, будет предложено удалить все файлы, находящиеся в подкаталоге. Используйте это с осторожностью. Build приведёт к сборке текущего подпроекта. Force Reedit (... в процессе написания ...) Clean (... в процессе написания ...) Install (... в процессе написания ...) Install (as root user) (... в процессе написания ...)

### Automake

(... в процессе написания ...)

#### Autoconf

##### Эффект скрипта configure

`Makefile.in` в `Makefile`

    prefix = @prefix@
    INSTALL = @INSTALL@
    build_triplet = @build@
    CXX = @CXX@

    prefix = /home/bernd/kde3
    INSTALL = /usr/bin/ginstall -c -p
    build_triplet = i686-pc-linux-gnu
    CXX = g++

`config.h.in` в `config.h`

    /* Define if you have libz */
    #undef HAVE_LIBZ
    /* Размер `int', как подсчитано sizeof. */
    #undef SIZEOF_INT

    /* Define if you have libz */
    #define HAVE_LIBZ 1
    /* Размер `int', как подсчитано sizeof. */
    #define SIZEOF_INT 4

#### Automake

(... в процессе написания ...)

#### &automanag;

##### Снимок экрана менеджера automake

#### Сборка и установка библиотек

- -rpath

- PIC

- static

- plugins: no-undefined

### Специальные файлы makefile и скрипты сборки

(... в процессе написания ...)

### Параметры компилятора

(... в процессе написания ...)

### Параметры make

(... в процессе написания ...)

## Расширенное использование autoproject

### Несколько конфигураций сборки

(... в процессе написания ...)

### Кросс-платформенное компилирование

Если у вас есть кросс-платформенные компиляторы, вы можете компилировать программы под процессоры и операционные системы, отличные от текущей. Коллекция компиляторов &gnu; GCC может также быть собрана с поддержкой кросс-платформенности. Для подробностей см. info-страницы GCC. Некоторые дистрибутивы Linux также предоставляют уже собранные кросс-платформенные версии компиляторов.

Пакеты, основанные на automake можно сделать кросс-платформенными указанием ключа `--host` скрипту configure и установкой переменных окружения `CC` и `CXX`. В &kdevelop; есть возможность создания нескольких конфигураций сборки. Для подробностей см. buildconfigurations. После того, как вы создали новую конфигурацию сборки через диалог Project Project Options..., добавьте ключ

    --host=платформа

в опции configure. `Платформа` указывается в виде

    процессор-поставщик-ос

или

    процессор-поставщик-ядро-ос

Кроем, того вы можете использовать краткую форму, например i386-linux или arm-elf.

### Qt/Embedded

&qte; - это версия библиотеки &qt;, которая не использует X Window, а прорисовывает графику напрямую на framebuffer системы Linux. Это полезно для встраиваемых систем с ограничениями по использованию памяти. API этой библиотеки полностью совместимо с библиотекой для X11.

Разработка приложения для &qte; в &kdevelop; не очень отличается от разработки под &qt; для X11. На самом деле, вы даже можете использовать одну кодовую базу для обоих версий. Если вы используете менеджер autoproject, вы можете переключиться на версию embedded передачей ключа `--enable-embedded` скрипту configure. Это можно сделать в диалоге Project Project Options... в Configure Options. Ключом `--with-qt-dir=DIR` можно указать каталог, в котором установлен &qte;.

После конфигурации и сборки вашего приложения с этими ключами, оно будет использовать библиотеку `libqpe.so`. Его нельзя будет запустить совместно с X11. Чтобы протестировать его, запустите его из программы qvfb (Qt Virtual Frame Buffer).

    app -qws -display QVFb:0

В можете создать несколько сборочных конфигураций, как описано выше.

Приложения для &qte; обычно выполняются как отдельные команды на устройстве, для которого они сделаны. Trolltech также поддерживает Qtopia, коллекцию приложений для PIM, обзора web, и других направлений, работающих вместе. Это стандартное окружение например на Sharp Zaurus. Вы можете писать приложения, интегрированные в это окружение, используя Qtopia SDK. Это достигается созданием основного класса вашего приложения подклассом `QPEApplication` и компонованием библиотеки `libqpe.so`. Если вы разрабатываете ваше приложение используя менеджер autoproject, вам нужно добавить ключ `--enable-qtopia` в опции configure.

## Интерфейс отладчика

Для C и C++ &kdevelop; содержит встроенный отладчик, интегрированный с редактором. Технически, это реализовано как фронт-энд для отладчика &gnu; gdb через каналы (pipe). Отладчик можно запустить несколькими способами:

- Через Debug Start, при этом в отладчик загрузится главная программа вашего проекта.

- Через Debug Start (other) Examine core file загрузится core-файл, генерируемый ядром системы после сбоя программы (это может быть выключено в вашей системе, см. ulimit(1)).

- Через Debug Start (other) Attach to process отладчик подстроится к уже запущенной программе. Вам нужно будет выбрать её из списка запущенных процессов.

- Помните, что отладка возможно только если программа была скомпилирована с информацией для отладки. Это можно сделать в диалоге Compiler options. Информация для отладки помогает найти соответствие между именами файлов, строчками и адресами в программе.

Отладчик предлагает несколько видов информации о процессе:

- ## Переменные

  Окно содержит список значений всех локальных переменных на текущей точке выполнения.

  Можно наблюдать как локальные, так и глобальные переменные. Добавить переменную можно либо нажатием кнопки Add, либо нажатием Enter при выбранном пунктеe Watch.Удалить их можно через контекстное меню.

- ## Точки останова

  (... в процессе написания ...)

- ## Фреймовый стек

  (... в процессе написания ...)

- ## Дизассемблирование

  (... в процессе написания ...)

### Установка точек останова

(... в процессе написания ...)

### Параметры

### Отобразить обработанные имена

В программе, написанной ан C++ имена функций изменены (mangled), к начальному имени добавляется информация о и типах аргументов, которые она принимает. Это необходимо для перегрузки (overload) функций. Алгоритм такой обработки не стандартизован и имеет различные реализации даже в разных версиях компилятора &gnu; C++.

В окне дизассемблирования отображаются не изменённые имена, однако это можно изменить.

### Установка точек останова на загрузке библиотеки

Отладчик gdb не разрешает устанавливать точки останова в коде, не загруженном в данный момент. В приложении с модульной структурой, где код загружается только по требованию (через функцию libc `dlopen(3)`). Возможность установки точек останова в библиотеках предоставляет &kdevelop;. Таким образом точки останова ставятся в своеобразную очередь и передаются gdb только после загрузки необходимой библиотеки.

### Включить плавающую панель

(... в процессе написания ...)

## Использование CVS

### Основы &CVS;

&CVS; — система контроля версий, используемая большинством проектов с открытым исходным кодом, в т.ч. и &kde;. Она хранит весь исходный код в одном месте, называемом хранилище (repository). С помощью такого хранилища, каждый может получить снимок исходного кода на определённый момент времени (и не обязательно на текущий). В отличии от других систем контроля версий, при работе над файлом, разработчику не нужно егоблокировать, что расширяет возможности параллельной разработки.

После выполнения задачи, разработчик загружает (commit) изменённые файлы в хранилище (со списком изменений). &CVS; может объединять изменения в одном файле, сделанные несколькими людьми. Конечно, может случиться так, что разработчики работали над одной и той же частью файла, что приведёт к конфликту (на практике такое случается редко и является результатом недостаточного обсуждения процесса разработки). В таком случае &CVS; отказывается принять конфликтный файл, т.е. разработчику придётся самостоятельно устранять конфликт.

&CVS; может намного больше, например, вести несколько веток (branch) разработки (например &kde; 3.1.4 и &kde; 3.2 были разными ветками дерева разработки &kde;), перемещать изменения из одной ветки в другую, выводить различия между разными версиями файла, выводить историю изменений файла и т.д.

&CVS; реализован как система клиент-сервер. Со стороны пользователя, связь с хранилищем идёт через консольную программу &cvs;. Однако доступно также большое количество графических интерфейсов к ней, например Cervisia () или TkCVS (). В &kdevelop; напрямую доступна лишь небольшая часть функциональности &cvs;, необходимая для каждодневной работы.

Вам потребуется знание основ использования &CVS;, в частности, вы должны знать как загружать (checkout) проект из хранилища. Мы рекомендуем книгу Open Source Development With CVS, написанную Karl Fogel, распространяемую бесплатно (кроме не технических глав). Кроме того вы можете прочитать о &CVS; по-русски на сайте linux.org.ru

### Команды &CVS; в &kdevelop;

В обзоре файлов доступны такие пункты контекстного меню:

- ### Добавить в хранилище

  Подготавливает отмеченные файлы к передаче их в хранилище.

- ### Удалить из хранилища

  Подготавливает отмеченный файл к удалению из хранилища. При этом файл также удаляется на локальной файловой системе.

- ### Обновить

  Выполняет команду `cvs update` для объединения изменений, сделанных другими пользователями. Если вы вызываете эту команду для каталога, обновление происходит рекурсивно, если только вы не отключили это в конфигурационном файле `.cvsrc`.

- ### Передать на сервер

  Выполняет команду `cvs commit` для передачи изменений, сделанных вами в хранилище. Помните, что перед этим необходимо выполнить обновление. Иначе, если другой пользователь уже передал свои изменения до этого, может возникнуть конфликт.

Все эти команды запускаются как подпроцесс &kdevelop; без дополнительных ключей или переменных окружения. Это создаёт проблемы, например, когда вы работаете через соединение &ssh;, и вам нужно ввести пароль. Это необходимо при работе с `sourceforge.net`. Работа над этой проблемой описана в FAQ CVS/SSH, который можно найти в разделе документации проекта SourceForge.

### За упаковкой

#### Что &CVS; записывает в рабочем каталоге

(... в процессе написания ...)

## Запуск внешних программ

Не смотря на то, что &kdevelop; т.н. интегрированная среда разработки, она никогда не будет содержать все возможности, которые возможно вам потребуются. В &kdevelop; есть несколько возможностей запустить внешнее приложение, подключить его к работе с файлами, или использовать внешние фильтры для обработки содержание окна редактирования.

Наиболее общая и простая возможность - меню Сервис, которое вы с лёгкостью можете настраивать. Это выполняется через Settings Configure KDevelop... External tools.

Другие средства обсуждаются в главе plugintools.

## Подключаемый инструментарий

&kdevelop; содержит большое количество маленьких инструментов, помогающих вам быстрее выполнить определённую задачу. Большинство из них реализованы в виде модулей. Это значит, что если они вам не нужны, вы можете их отключить в диалоге Project options из меню Модули (для модулей в рамках проекта) или через Настройка Configure KDevelop.... Выключенные модули не отображаются в меню и не занимают память.

- ## Модуль `abbrev`

  Этот модуль заменяет сокращения на часто используемые части кода. Он активируется нажатием Ctrl Пробел. Например, вы ввели `"ife"` в редактор языка C++. Теперь нажмите Ctrl Пробел, и вы получите шаблон кода `if-else`. Набор поддерживаемых сокращений зависит от языка программирования. Например, для PHP вам вряд ли будут интересны сокращения кода для языков, отличных от Java.

  Набор сокращений можно настраивать. Настройка Настроить KDevelop...,вкладка Abbreviations

- ## Модуль `filter`

  Предлагает две функции. Сервис Выполнить команду позволяет ввести команду оболочки. После нажатия на кнопке Start вывод команды будет занесён в буфер обмена.

  Сервис Filter selection through command.... Для использования этого нужно выделить текст в редакторе. Если вы теперь выполните команду оболочки, то после нажатия на кнопке Start, выделенный текст будет передан команде через стандартный ввод. В свою очередь, стандартный вывод будет вставлен вместо выделения.

- ## Модуль &doxygen;

  Упрощает использования средства API-документирования &doxygen; (). Проект Run Doxygen приведёт к генерированию API-документации к текущему проекту, основываясь на конфигурационном файле `Doxyfile` в каталоге проекта.

  Более того, вы можете настроить &doxygen; через диалог Проект Параметры проекта.... Он подобен мастеру &doxywizard;.

- ## Модуль &ctags;

  Этот инструмент является расширением обозревателя классов.

  Активируйте модуль через меню Сервис CTags.... При первом запуске, вам будет предложено создать базу данных поиска. При этом в каталоге проекта создастся файл `tags`. Это текстовый файл со списком идентификаторов исходных файлов проекта.

  В такой базе данных вы можете выполнять поиск двумя способами: если Regular expression match включено, вводимый вами текст будет интерпретироваться как регулярное выражение (стандарта POSIX) и сравниваться в существующими идентификаторами. Например, текст `.*Widget` приведёт к поиску всех идентификаторов, заканчивающихся на `Widget`. Иначе, поиск будет дословным.

  При поиске будет выводиться список подходящих идентификаторов, сопровождающийся номерами строк с их объявлениями. Чтобы перейти к объявлению, щёлкните на идентификаторе.

  Для некоторых языков программирования, &ctags; распознаёт разные типы идентификаторов. например, в Python есть классы и функции, и вы можете выборочно искать отдельно либо классы, либо функции.

  База данных не обновляется каждый раз при изменении исходников. Поэтому вам нужно самостоятельно периодично обновлять её с помощью кнопки Regenerate.

- ## Модуль `astyle`

  (... в процессе написания ...)

- ## Модуль `regexptest`

  Составление регулярных выражений может быть долгой работой, обычно первая попытка поиска по введённому выражению выводит много результатов. Модуль regexptest позволяет вам напрямую отслеживать изменения в регулярном выражении. он активируется через Сервис Debug Regular Expression....

  Вы можете выбрать синтаксис регулярного выражения. На текущий момент поддерживается стандарт POSIX, используемый командой &grep;, и расширенный стандарт POSIX, используемый в команде &egrep;.

  При вводе регулярного выражения, вам сразу будет сообщаться об ошибках в нём. Введением текста в Test string, вы можете проверить, подходит ли текст введённому вами выражению. В частности, если регулярно выражение содержит группы, такие как `([a-z])`, содержание подходящих подгрупп будет отображено в списке.

- ## Модуль `konsole`

  (... в процессе написания ...)

### Обзор

&kdevelop; содержит модули (части), загружаемые во время выполнения по запросу. Это экономит процессорное время и оперативную память.

Некоторые части являются глобальными, т.к. они задействованы в целом &kdevelop;. Например, часть uimode позволяет разработчику выбирать желаемый режим интерфейсов.

Кроме того есть части по управлению проектом, и предназначены для конкретного типа проекта. Например, менеджер Automakefor загружается только при открытии проекта, основанного на Automake.

В зависимости от предназначения активных (т.е. загруженных в данный момент) частей, они могут добавлять новые пункты меню, кнопки на панелях инструментов и т.д..

### Части &kdevelop; для управления проектом

antproject | ANT (Java)
autoproject | Automake
customproject | Специальный проект
trollproject | QMake

### Глобальные части &kdevelop;

Часть | Описание
Мастер приложений | Мастер создания приложений
history |
konsole | Встроенная командная строка
Выбор редактора | Выбор встроенного редактора исходников
doctreeview | Обозреватель документации
openwith |
fileselector | Элемент выбора файлов
uimode | Выбор режима интерфейса
texttools | Дополнительные текстовые средства
tipofday | Совет дня
grepview | Графический интерфейс grep
cvs | Поддержка CVS
tools |
regexptest | Тестирование регулярных выражений
abbrev | Расшифровщик сокращений
filter |
valgrind | Графический интерфейс valgrind

### Части &kdevelop; по поддержке языков программирования

cppsupport | Поддержка C/C++
fortransupport | Поддержка Fortran
javasupport | Поддержка Java
perlsupport | Поддержка Perl
phpsupport | Поддержка PHP
pythonsupport | Поддержка Python

### Части &kdevelop; по управлению проектами

astyle |
buglist |
classview | Обозреватель классов
ctags |
debugger | Отладчик &gnu;
diff |
distpart |
doxygen |
fileview |
javadebugger |
manager |
nedit |
outputviews |
perforce |
qeditor |
scripting |
scriptproject |
sourcenav |
svn |
visualboyadvance |
windowmenu |

## Обзор меню и панелей инструментов

(... в процессе написания ...)

## &kdevelop; в разных режимах интерфейса

### Дочерние окна

Вернуться к обзору режимов интерфейса.

Снимок экрана

&kdevelop; в режиме "Дочерние окна"

Вернуться к обзору режимов интерфейса.

### Вкладки

Вернуться к обзору режимов интерфейса.

Снимок экрана

&kdevelop; в режиме "Вкладки"

Вернуться к обзору режимов интерфейса.

### Отдельные окна

Вернуться к обзору режимов интерфейса.

Снимок экрана

&kdevelop; в режиме "Отдельные окна"

Вернуться к обзору режимов интерфейса.

### Режим IDEAl

Вернуться к обзору режимов интерфейса.

Снимок экрана

&kdevelop; в режиме IDEAl

Вернуться к обзору режимов интерфейса.

## Дополнительная информация

### Получение информации

(... в процессе написания ...)

### Отчёты об ошибках

(... в процессе написания ...)

### Лицензирование

&underFDL; &underGPL;

## Изменения

### Изменения, внесённые в этот документ

- 2003-01-03 — Начало Changelog

## Библиография

(... в процессе написания ...)

(... в процессе написания ...)