Contents |
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
| Tutorial Series | Getting Started |
| Previous | Сборка KDE 4 |
| What's Next | Other development topics |
| Further Reading | n/a |
Существует три основных способа работы разработчиков с KDE 4:
Все 3 способа описаны в последующих разделах.
| Note |
|---|
Если при запуске приложений kde4 возникают похожие ошибки:
Qt: Session management error: Could not open network socket QMutex::lock: Deadlock detected in thread -1241241936или при запуске startkde ничего не происходит, то прочитайте эту статью, чтобы найти решение проблемы. |
Для данного способа требуется утилита 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.
| Note |
|---|
При получении ошибок, связанных с отстутствием mimetypes и им подобных, попробуйте следующее:
|
Наиболее простой способ запустить KDE 4 приложение - использовать su, чтобы стать пользователем kde-devel, а затем запустить любое приложение KDE 4 из командной строки. Чтобы сменить пользователя, напечатайте:
su - kde-devel
а затем, после ввода пароля
export DISPLAY=:0
| Note |
|---|
| Экспортирование переменной DISPLAY необходимо, чтобы KDE 4 приложения появлялись на рабочем столе KDE 3. |
Все переменные окружения и всё остальное должно быть корректно установлено в вашем
.bashrc файле. Чтобы запустить приложение, просто напечатайте его имя, например, kwrite.
| Note |
|---|
При получении ошибок, связанных с отстутствием mimetypes и им подобных, попробуйте следующее:
|
Самый простой способ запускать 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
Перед тем, как что-то серьёзное может быть выполнено с помощью данного способа, следует настроить вход без пароля. Сначала, выполните следующую команду из-под обычного пользователя:
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
| Warning |
|---|
Использование беспарольного входа через SSH небезопасно, поэтому удостоверьтесь, что вы защитили ваш файл ~/.ssh/id_rsa, убрав к нему доступ с помощью:
chmod og-xrw ~/.ssh/id_rsa(также файл должен иметь данные права при создании) |
Один из способов запускать приложения более удобным способом, чем через SSH из командной строки, - создать .desktop файлы, которые входят в другой эккаунт с помощью ssh.
| 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=
| 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 |
| Note |
|---|
| Чтобы надлежащим образом создать .desktop файл для KDE 4 приложений, использую образец, пакет приложения (app's package) должен быть установлен в ~/kde/bin с помощью команды cmakekde |
Вместо того, чтобы использовать полнофункциональный виртуальный 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]
Enable=false
в /etc/kde3/kdm/kdmrc на
[Xdmcp]
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
| This section needs improvements: Please help us to
cleanup confusing sections and fix sections which contain a todo |
Я использую это для моего стартого скрипта nested_kde4.sh:
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.
Чтобы запустить полнофункциональный сеанс рабочего окружения KDE, можно либо сделать обычным способом из командной строки:
X :1 & export DISPLAY=:1 startkde
| 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) в списке сеансов должен появится новый пункт.
| Note |
|---|
| Путь к 'qdbus' (обычно $QTDIR/bin) должен быть корректно прописан в $PATH для удачного запуска сеанса. В противном случае вы получите следующую ошибку "Could not start DBus. Check your installation." |
В данном разделе описано, как использовать KDevelop 3.4 для разработки приложений KDE 4. TЕсли у вас есть какие-либо вопросы, замечания, касающиеся данного раздела, то вы можете воспользоваться страницей обсуждения.
Для работы требуется по крайней мере 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. Выполните это прямо сейчас.
| Tip |
|---|
| С помощью функции start3app можно запускать любые KDE 3 приложения, например Kompare или kdesvn. Однако, вы не можете этим способом запускать KDbg, для отладки KDE 4 приложений из-за того, что переменные окружения для отлаживаемого приложения неверны. |
Теперь нам нужно немного настроить KDevelop. Для этого зайдите в Настройка->Настроить KDevelop...->Документация. Очистите все поля, не связанные с разработкой KDE 4.
{{note|Так как KDevelop не распознаёт переменные окружения (такие, как $HOME), их надо заменить на реальные пути.
Выберите Добавить..., чтобы добавить документацию по kdelibs API. В данном диалоге используйте следующие установки:
Теперь добавьте документацию по Qt API:
После добавления документации по kdelibs и Qt API, проверьте, активны ли чекбоксы (TOC,Индекс и Поиск). Затем откройте вкладку Полнотекстовый поиск и проверьте корректность путей для утилит htdig, htmerge и htsearch. Посде этого диалоговое окно настроек можно закрыть.
Теперь настало время открыть проект, над которым вы собираетесь работать, выберите Проект->Открыть проект.... Файлы проектов находятся в каталогах самих проектов. Например, если вам требуется Konsole, то нужно открыть $KDE_BUILD/KDE/kdebase/apps/konsole/konsole.kdevelop. Теперь необходимо указазать настройки проекта в Проект->Параметры проекта. Это необходимо делать для каждого нового проекта.
| Note |
|---|
| Иногда файл проекта KDevelop может отсутствавать в каталоге нужного вам приложения.
Это может быть обусловлено различными причинами, зависит от того, как написаны файлы CMake. Обычно, если в CMake файле присутствует заголовок project(projectname), всё должно работать. Если вы знакомы со структурой CMake файлов, вы можете попробовать добавить заголовк (если он отсутствует). Обходной путь при решении данной проблемы - использовать файл проекта KDevelop из родительского каталога (или даже ещё выше). В таком случае вам следует использовать Сделать каталог активным из контекстного меню Выбор файлов, ненужные каталоги можно не использовать при сборке и установке. |
{{note|Загрузка символов из библиотеки Qt 4 в хранилище классов требуется, если вы не установили Qt4, т.е. используете его напрямую с каталога сборки. Недостаток использования "Загрузки символов из библиотеки Qt 4 в хранилище классов" в том, что во время добавления из-за отсутствия прогессбара приложение выглядит зависшим. В качестве альтернативы можно использовать загрузку символов из любого каталога в хранилище классов.
| 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 |
Теперь все настройки, касающиеся проекта, выполнены. Теперь вы должно удалить некоторые ненужные плагины в 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.
Вы должны отключить, по крайней мере, те, что выделины жирным шрифтом.
Теперь откройте какой-нибудь исходный файл (если вы этого ещё не сделали). Пункт меню Настройка->Настроить редактор... станет активным, вам нужно настроить параметры отступа, чтобы они соответствовали стилю, принятому в проекте, над которым вы работаете. Наиболее важные настройки:
В главном окне щёлкните по вкладке CTags, находящейся на нижнем таббаре, затем щёлкните по кнопке Regenerate, чтобы создать базу данных CTags для более лёгкой навигации по исходному коду.
Поздравляем! Все существенные настройки выполнены!
Обратитесь к мануалу по KDevelop, чтобы ознакомиться с основной информацией, связанной с использованием KDevelop. Данный раздел касается специфичных для KDE 4 аспектов.
Приложения KDE содержат много отладочных символов, что означает, что требуется большое количество памяти для достижения приемливого времени запуска приложения во время отладки. Мнение одного из разработчиков GDB: "Мне было бы очень тяжело отлаживать KDE при наличии меньше 1 GB RAM". Если пошагавая отладка слишком медлено работает, вам может помочь следующее:
| Note |
|---|
| KDevelop не поддерживает модификацию сборочной системы CMake. Это означает, что вы не можете использовать KDevelop, чтобы добавить или удалить файлы с проекта или изменить какие-либо параметры сборки. Вам необходимо модифицировать файлы CMake вручную, после чего запускать cmakekde. Ознакомьтесь с уроком по CMake, чтобы узнать, как это делать. |
| Tip |
|---|
| При работе над библиотеками, их сначала надо установить, перед тем, как тестировать или отлаживать изменения.
Из-за того, что это неудобно и занимает очень много времени, лучше для всех ващих библиотек в каталоге установки создавать символические ссылки (ln -s), указывающие на файлы из каталога сборки Обычно, даже простые программы используют внутренние библиотеки, например диалог настроек в Konsole является библиотекой. |