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

Jump to: navigation, search


Contents

Getting_Started/Set_up_KDE_4_for_development

Настройка KDE4 для разработки
Tutorial Series   Getting Started
Previous   Сборка KDE 4
What's Next   Other development topics
Further Reading   n/a
noframe
 
Note
Предполагается, что вы уже собрали kdelibs, kdepimlibs и kdebase, следуя этим иснтрукциям

Запуск приложений и сеансов KDE 4

Существует три основных способа работы разработчиков с KDE 4:

Все 3 способа описаны в последующих разделах.

noframe
 
Note
Если при запуске приложений kde4 возникают похожие ошибки:
 Qt: Session management error: Could not open network socket
 QMutex::lock: Deadlock detected in thread -1241241936 
или при запуске startkde ничего не происходит, то прочитайте эту статью, чтобы найти решение проблемы.

Запуск приложений KDE 4

Использование обычной оболочки с sux

Для данного способа требуется утилита sux (http://fgouget.free.fr/sux/sux-readme.shtml). Утилита sux доступна во многих дистрибутивах. В противном случае вы можете положиться на способ обычная оболочка без sux, описанный ниже. sux позволяет переключаться к другому пользователю с неявным управлением настроек (implicit managing of the X forwarding details) X (authentication and DISPLAY exporting) простым и удобным способом.

Чтобы залогиниться, напечатайте sux - kde-devel

Все переменные окружения и всё остальное будет корректно установлена для All environment variables and everything else should be set up correctly by your .bashrc. Чтобы запустить приложение, просто наберите его имя, например, kwrite.

noframe
 
Note
При получении ошибок, связанных с отстутствием mimetypes и им подобных, попробуйте следующее:
  • запустите unset XDG_DATA_DIRS ; kbuildsycoca4

Использование обычной оболочки без sux

Наиболее простой способ запустить KDE 4 приложение - использовать su, чтобы стать пользователем kde-devel, а затем запустить любое приложение KDE 4 из командной строки. Чтобы сменить пользователя, напечатайте:

su - kde-devel а затем, после ввода пароля export DISPLAY=:0

noframe
 
Note
Экспортирование переменной DISPLAY необходимо, чтобы KDE 4 приложения появлялись на рабочем столе KDE 3.

Все переменные окружения и всё остальное должно быть корректно установлено в вашем

.bashrc файле. Чтобы запустить приложение, просто напечатайте его имя, например, kwrite.
noframe
 
Note
При получении ошибок, связанных с отстутствием mimetypes и им подобных, попробуйте следующее:
  • запустите unset XDG_DATA_DIRS ; kbuildsycoca4
noframe
 
Note
{{{1}}}

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

Самый простой способ запускать KDE 4 приложения с помощью SSH в текущей рабочей среде - войти под пользователем kde-devel в командную оболочку совместимую с X следующим образом: The simplest way to run a KDE 4 application with SSH in your current desktop environment is to get an X-aware shell prompt as the kde-devel user like this: ssh -X kde-devel@localhost Теперь можно запускать KDE 4 приложения обычным способом, например: kwrite Эти 2 строчки могут быть соединены для удобства: ssh -X kde-devel@localhost kwrite

noframe
 
Note
Если данный способ приводит к ошибкам, попробуйте советы по решению проблемы, приведённые выше.


Вход без пароля

Перед тем, как что-то серьёзное может быть выполнено с помощью данного способа, следует настроить вход без пароля. Сначала, выполните следующую команду из-под обычного пользователя: ssh-keygen -t rsa Три раза нажмите enter, чтобы принять путь ~/.ssh/id_rsa и пустую строку с паролем. Теперь скопируйте в ~/.ssh/id_rsa.pub одиночную строку, выводимую следующей командой: cat ~/.ssh/id_rsa.pub После того, как строка скопирована, войдите обратно под пользователем kde-devel с помощью ssh и добавьте скопированную строку в файл $HOME/.ssh/authorized_keys:

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

Вставьте строку, сохраните файл и закройте KWrite. Теперь снова попробуйте запустить kwrite той же SSH-командой; Вам не должно потребоваться вводить пароль: ssh -X kde-devel@localhost $HOME/kde/bin/kwrite

noframe
 
Warning
Использование беспарольного входа через SSH небезопасно, поэтому удостоверьтесь, что вы защитили ваш файл ~/.ssh/id_rsa, убрав к нему доступ с помощью: chmod og-xrw ~/.ssh/id_rsa(также файл должен иметь данные права при создании)


SSH-файл рабочего стола (The SSH desktop file)

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

noframe
 
Note
Это возможно, если только ваша рабочая среда поддерживает .desktop файлы, но, по крайней мере, KDE и GNOME поддерживают.

Можно использовать существующий .desktop файл в качестве шаблона (с вашего рабочего окружения) или же создать с нуля. Основная идея - дописать префикс к имени программы: ssh -X kde-devel@localhost $HOME/kde/bin/

Простой .desktop файл, запускающий KWrite, выглядит следующим образом:

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

Ktip.png
 
Tip
Apps launched using SSH like this don't trigger the correct launch responses, so you probably want to disable "launch feedback" for your .desktop files


noframe
 
Note
Чтобы надлежащим образом создать .desktop файл для KDE 4 приложений, использую образец, пакет приложения (app's package) должен быть установлен в ~/kde/bin с помощью команды cmakekde


Запуск сеансов KDE 4

Вложенный сеанс KDE 4

Nested

Вместо того, чтобы использовать полнофункциональный виртуальный X для разработки ПО, можно использовать Xephyr, чтобы встроить сеанс KDE 4 в запущенный KDE 3 сеанс или любую другую рабочую среду X11.

Это также можно осуществить с помощью xnest, но xnest не может работать с такими расширениями, как Render, поэтому многие предпочитают Xephyr.

Если вы хотите запустить минимальный сеанс KDE, просто запустите Xephyr (в Kubuntu называется xserver-xephyr):

Xephyr :1&

Теперь вы можете запустить KDE:

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

startkde-modified является копией скрипта startkde с добавлением в начало файла следующих строк:

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

Xephyr можно также использовать с KDM с помощью протокола Xdmcp, что позволяет запускать новый сеанс KDE 4 через KDM.

В Kubuntu это можно сделать, изменив

[Xdmcp]

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

Enable=false

в /etc/kde3/kdm/kdmrc на

[Xdmcp]

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

Enable=true

и модифицируйте ваш /etc/kde3/kdm/Xaccess, чтобы разрешить доступ к локальной машине. Помимо этого следует заблокировать доступ к порту Xdmcp для всех внешних интерфейсов, если вы работаете в опасной зоне (untrusted zone/environment).

Если всё готово, просто запустите Xephyr:

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

где -host-cursor задаёт число попыток использовать курсор хоста и -screen - разрешение экрана.


Note: Если вы получаете много ошибок при соединении, можно попробовать запустить Xephyr с опцией -ac, например:

Xephyr -ac :1&

Если у вас нет Xephyr, то вы можете использовать Xnest:


Xnest -ac :1& export DISPLAY=:1



noframe
 
This section needs improvements: Please help us to

cleanup confusing sections and fix sections which contain a todo


Sping 00:25, 9 April 2007 (CEST)

Я использую это для моего стартого скрипта nested_kde4.sh:

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

Если появляется ошибка:

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

Попробуйте:

mkdir /var/tmp/kde-devel-kde4

Вышеприведённый код предполагает, что вы работаете из-под kde-devel.

noframe
 
Note
В большинстве случаев приходиться использовать startkde вместо startkde-modified

Запуск отдельного сеанса Solitary KDE 4 session

Solitary

Чтобы запустить полнофункциональный сеанс рабочего окружения KDE, можно либо сделать обычным способом из командной строки:

X :1 & export DISPLAY=:1
startkde
noframe
 
Note
Если X-сервер отказывает в соединении, выдавая что-то наподобие: Xlib: connection to ":1.0" refused by server, попробуйте X -ac :1.

или можно добавить KDE 4 в менеджер входа. Для KDM (или совместимого менеджера входа) это можно сделать, создав .desktop файл либо в `kde-config --prefix`/share/apps/kdm/sessions/, либо в /usr/share/xsessions/. Наиболее простой способ сделать это - скопировать существующий kde.desktop файл и назвать его kde4.desktop. Откройте новый .desktop файл в текстовом редакторе и замените поля Exec, TryExec и Name на что-то в стиле:


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

Замените $HOME/kde из примера выше на префикс, где находится KDE4.

После перезапуска менеджера входа (Alt+e в KDM) в списке сеансов должен появится новый пункт.

noframe
 
Note
Путь к 'qdbus' (обычно $QTDIR/bin) должен быть корректно прописан в $PATH для удачного запуска сеанса. В противном случае вы получите следующую ошибку "Could not start DBus. Check your installation."


Разработка

KDevelop

В данном разделе описано, как использовать KDevelop 3.4 для разработки приложений KDE 4. Если у вас есть какие-либо вопросы или замечания, касающиеся данного раздела, то вы можете воспользоваться страницей обсуждения.


Необходимые программы

Для работы требуется, по крайней мере, KDevelop версии 3.4, который является KDE 3 приложением. Версии ниже 3.4 не поддерживают Qt 4 и некоторые другие вещи. Версия KDevelop для KDE 4 ещё не готова для применения в серьёзных разработках. KDevelop можно скачать с домашней страницы проекта. Удостоверьтесь, что вы поставили KDevekop, как обычное KDE 3 приложение, не с помощью пользователя kde-devel.

Также необходимо установить самую последнюю версию GDB, на данный момент это 6.6.0.

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

Также необходимо установить ctags, htdig, htmerge и htsearch. Могут оказаться полезнымиvalgrind и callgrind.


Удостоверьтесь, что вы выполнили сборку KDE 4 так, как описано в build инструкции и получили исправную рабочую среду KDE 4. Проверьте, запускаются ли простые простые приложение типа Konsole и KWrite из командной строки пользователя kde-devel.

Все последующие инструкции должны выполняться из-под пользователя kde-devel. Вам необходимо зайти в систему под этим пользователем, набрав su - kde-devel.

= Настройка окружения

KDevelop не имеет встроенной поддержки проектов CMake. К счастью, CMake может генерировать файлы проектов KDevelop. Для этого вместе с командой cmake нужно использовать параметр -GKDevelop3. Этот параметр позволяет CMake вместе с обычными Makefile-ми генерировать файлы проекта KDevelop. Для удобства можно изменить настройки cmakekde в .bashrc. Просто замените

cmake $srcFolder -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull&& \ make VERBOSE=1 && \ make install; на cmake $srcFolder -GKDevelop3 -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull&& \ make VERBOSE=1 && \ make install;

После этого перелогиньтесь, чтобы изменения .bashrc вступили в силу. Затем нужно перезапустить cmakekde из каталога сборки (его корня) проекта, над которым вы хотите работать с помощью KDevelop (если вы не использовали параметр -GKDevelop3 во время сборки). Например, если вы хотите работать с Konsole, входящей в состав kdebase, вам надо запустить cmakekde в каталоге $KDE_BUILD/KDE/kdebase. К несчастью, это пересоберёт всё, но всего один раз после изменения генератора файлов.

Из-за того, что все переменные окружения пользователя kde-devel специфичны для KDE 4, перед запуском KDevelop необходимо устанавливать старые значения, соответствующие KDE 3. Самый удобный способ - добавить функцию в ваш .bashrc:

function start3app {

 mkdir -p /tmp/$USER-kde
 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games 
 export LD_LIBRARY_PATH= 
 export KDETMP=/tmp/$USER-kde 
 export KDEVARTMP=/var/tmp/$USER-kde 
 export KDEHOME=$HOME/.kde 
 export KDEDIR=/usr 
 export KDEDIRS=$KDEDIR 
 export DISPLAY=:0 
 eval "$@"
 source $HOME/.bashrc   #Снова сбрасываем значения переменных окружения

}

Переменные PATH и LD_LIBRARY_PATH взяты у KDE 3 пользователя, и их значение в различных системах может различаться. Напечатайте echo $PATH и echo $LD_LIBRARY_PATH работая под обычным KDE 3 пользователем, чтобы получить их значения. Составляю функцию, приведённую выше, мы предположили, что KDE 3 установлена с префиксом /usr, как, например, принято в Debian-based дистрибутивах. Если KDE 3 установлена с другим префиксом, например, /opt/kde3, то вам следует поменять значение переменной KDEDIR.

Теперь вы можете запускать KDevelop, напечатав start3app kdevelop. Выполните это прямо сейчас.


Ktip.png
 
Tip
С помощью функции start3app можно запускать любые KDE 3 приложения, например Kompare или kdesvn. Однако, вы не можете этим способом запускать KDbg, для отладки KDE 4 приложений из-за того, что переменные окружения для отлаживаемого приложения неверны.


Настройка KDevelop

Теперь нам нужно немного настроить KDevelop. Для этого зайдите в Настройка->Настроить KDevelop...->Документация. Очистите все поля, не связанные с разработкой KDE 4.

{{note|Так как KDevelop не распознаёт переменные окружения (такие, как $HOME), их надо заменить на реальные пути.

Выберите Добавить..., чтобы добавить документацию по kdelibs API. В данном диалоге используйте следующие установки:

  • Тип: Doxygen Documentation Collection (это следует установить в первую очередь)
  • Расположение: $KDE_SRC/KDE/kdelibs/kdelibs-apidocs/index.html


Теперь добавьте документацию по Qt API:

  • Тип: Qt Documentation Collection (это следует установить в первую очередь)
  • Расположение: $HOME/qt-copy/doc/html/qt.dcf

После добавления документации по kdelibs и Qt API, проверьте, активны ли чекбоксы (TOC,Индекс и Поиск). Затем откройте вкладку Полнотекстовый поиск и проверьте корректность путей для утилит htdig, htmerge и htsearch. Посде этого диалоговое окно настроек можно закрыть.

Теперь настало время открыть проект, над которым вы собираетесь работать, выберите Проект->Открыть проект.... Файлы проектов находятся в каталогах самих проектов. Например, если вам требуется Konsole, то нужно открыть $KDE_BUILD/KDE/kdebase/apps/konsole/konsole.kdevelop. Теперь необходимо указазать настройки проекта в Проект->Параметры проекта. Это необходимо делать для каждого нового проекта.


noframe
 
Note
Иногда файл проекта KDevelop может отсутствавать в каталоге нужного вам приложения.

Это может быть обусловлено различными причинами, зависит от того, как написаны файлы CMake. Обычно, если в CMake файле присутствует заголовок project(projectname), всё должно работать. Если вы знакомы со структурой CMake файлов, вы можете попробовать добавить заголовк (если он отсутствует).

Обходной путь при решении данной проблемы - использовать файл проекта KDevelop из родительского каталога (или даже ещё выше). В таком случае вам следует использовать Сделать каталог активным из контекстного меню Выбор файлов, ненужные каталоги можно не использовать при сборке и установке.
  • Поддержка C++->Авто-дополнение кода
Здесь следует добавить базы данных для дополнения Qt и kdelibs кода (и других библиотек), например, можно добавить базу данных для дополнения кода kdepimlibs, если вы работаете над kdepim.
Для kdelibs нужно щёлкнуть по кнопке Добавить..., выбрать Загрузка символов из любого каталога в хранилище классов и добавить каталог с заголовочными файлами KDE ($HOME/kde/include) в список и следовать инструкциям визарда. Можно воспользоваться файловым диалогом и кнопкой "Добавить".
Теперь добавьте базу данных для Qt 4, используя Загрузка символов из библиотеки Qt 4 в хранилище классов. Для этого следует выбрать каталог с заголовочными файлами Qt 4, $HOME/qt-copy/include.

{{note|Загрузка символов из библиотеки Qt 4 в хранилище классов требуется, если вы не установили Qt4, т.е. используете его напрямую с каталога сборки. Недостаток использования "Загрузки символов из библиотеки Qt 4 в хранилище классов" в том, что во время добавления из-за отсутствия прогессбара приложение выглядит зависшим. В качестве альтернативы можно использовать загрузку символов из любого каталога в хранилище классов.


  • Поддержка C++->Параметры Qt
Отметьте Включить параметры Qt и выберите Qt4 версию. Установите значение QMake Binary в $HOME/qt-copy/bin/qmake. Затем выберите Qt 4 style в Qt include syntax. В Designer Binary пропишите $HOME/qt-copy/bin/designer. Чтобы получить возможность использовать виджеты KDE в дезайнере, используйте диалог Change Plugin Paths, чтобы добавить каталог плагинов KDE. Для этого в строке редактирования напечатайте $HOME/kde/lib/kde4/plugins и нажмите Добавить.


  • Параметры запуска
Удостоверьтесь, что вы вписали правильный путь для Executable. Например, для запуска Konsole нужно вписать $KDE_BUILD/KDE/kdebase/apps/konsole/src/konsole. Не забудьте в Debug Arguments добавить параметр --nofork, в противном случае некоторые приложения, например KMail, не будут работать вообще.
В связи с тем, что функция start3app изменяет некоторые переменные окружения, вам необходимо изменить их здесь, чтобы KDE 4 приложения могли запускаться из KDevelop.
Для таких приложений, как Konsole это не принципиально, но остальные (наподобие KMail) упадут при запуске, если этого не сделать.
Просто щёлкните по кнопке Добавить / Копировать, чтобы добавить переменные окружения. Вам потребуются следующие (такие же, как и в вашем .bashrc):


Name Value
KDEHOME $HOME/.kde4
PATH $QTDIR/bin:$KDEDIR/bin:/usr/local/bin:$PATH
LD_LIBRARY_PATH $QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH
KDETMP /tmp/$USER-kde4
KDEVARTMP /var/tmp/$USER-kde4
KDEDIR $HOME/kde
KDEDIRS $KDEDIR
LD_BIND_NOW 42


  • Параметры сборки->Сборка
Удостоверьтесь, что стоит верный каталог сборки. Например, для Konsole это $KDE_BUILD/KDE/kdebase/apps/konsole.


  • Параметры сборки->Make
Возможно, вы захотите выбрать Прервать после первой ошибки. Также вы можете добавить 'VERBOSE= или VERBOSE=1 в Дополнительные параметры make, чтобы контролировать уровень "болтливости" во время сборки.
При наличии более одного процессора или доступа к кластеру icecream, можно выбрать опцию Run multiple jobs и задачть число процессоров в поле Число одновременных процессов. Это увеличит скорость компиляции. Это то же самое, что и -j опция make.


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


  • CTags->Общие
Необходимо корректно установить Путь к программе ctags, в Debian-based дистрибутивах это /usr/bin/ctags.
Возможно, вы захотите включить опцию При нескольких попаданиях, сразу перейти к первому.

Теперь все настройки, касающиеся проекта, выполнены. Теперь вы должно удалить некоторые ненужные плагины в Settings->Configure Plugins.... Например, я отключаю следующие плагины:


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

Вы должны отключить, по крайней мере, те, что выделины жирным шрифтом.

Теперь откройте какой-нибудь исходный файл (если вы этого ещё не сделали). Пункт меню Настройка->Настроить редактор... станет активным, вам нужно настроить параметры отступа, чтобы они соответствовали стилю, принятому в проекте, над которым вы работаете. Наиболее важные настройки:

  • Внешний вид->Границы->Показывать номера строк: Должно быть выбрано.
  • Внешний вид->Границы->Показывать отметки на полосе прокрутки: Должно быть выбрано.
  • Редактирование->Табуляция
  • Редактирование->Статичный перенос строк->Показывать маркеры статичного переноса строк: Должно быть выбрано.
  • Отступы->Автоматическая расстановка отступов->Режим расстановки отступов: Должен быть C Style
  • Отступы in general

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

Поздравляем! Все существенные настройки выполнены!

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

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


Отладка

Приложения KDE содержат много отладочных символов, что означает, что требуется большое количество памяти для достижения приемливого времени запуска приложения во время отладки. Мнение одного из разработчиков GDB: "Мне было бы очень тяжело отлаживать KDE при наличии меньше 1 GB RAM". Если пошагавая отладка слишком медлено работает, вам может помочь следующее:

  • Спрячьте локальные переменные. Часть Locals вкладки перемнных (слева) сильно замедляет работу при наличии большого количества локальных переменных во время пошаговой отладки. Значение переменной по-прежнему можно получить с помощью Evaluate expression.
  • Используйте патч с http://bugs.kde.org/show_bug.cgi?id=143977. Он предотвращает обновление виджета framestack при выполнении каждого шага, значительно повышая скорость отладчика. Патч имеет незначительные ошибки, только поэтому он ещё не внесён в проект.


noframe
 
Note
KDevelop не поддерживает модификацию сборочной системы CMake. Это означает, что вы не можете использовать KDevelop, чтобы добавить или удалить файлы с проекта или изменить какие-либо параметры сборки. Вам необходимо модифицировать файлы CMake вручную, после чего запускать cmakekde. Ознакомьтесь с уроком по CMake, чтобы узнать, как это делать.
Ktip.png
 
Tip
При работе над библиотеками, их сначала надо установить, перед тем, как тестировать или отлаживать изменения.

Из-за того, что это неудобно и занимает очень много времени, лучше для всех ващих библиотек в каталоге установки создавать символические ссылки (ln -s), указывающие на файлы из каталога сборки

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


KBugBuster

KBabel

Kaider


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