Основы GTK+, часть 3: Развертывание приложения GTK+.: Как разворачивать GTK+Источник: IBM developerWorks Россия Мацей Катафьяж, Сергей Безденежных
В двух предыдущих статьях цикла «Основы GTK+» (Часть1, Часть 2), мы узнали, что такое GTK+ и для чего он используется. Эта последняя статья цикла освещает вопросы, связанные с распространением вашего программного продукта среди пользователей, то есть вы узнаете, как подготовить приложение GTK+ к встрече с множеством разных систем. Уникальность - это хорошая черта, но не для библиотеки. Что касается программного обеспечения, широкая известность и популярность означает больше обзоров, больше сообщений об ошибках (и как следствие, их устранение), больше шансов, что ПО будет протестировано в необычных средах и нетипичных ситуациях. Все это ведет только к улучшению и упрощению использования библиотеки. К счастью, GTK+ достаточно большая фигура среди инструментариев и один из наиболее широко используемых пакетов ПО. Посмотрите на следующий список различных платформ, на которых работает GTK+:
Microsoft® Windows®
Конвейер приложенияНравиться вам или нет, разработка приложения состоит не только из приятного написания строчек кода. Чтобы создать успешный продукт, прежде всего, нужно создать конвейер, который позволит вашим разработчиком нормально трудиться. ПрограммистНаиболее критическая часть такого конвейера - это, конечно, программист. Если библиотека сложна в использовании, имеет странные требования или плохо совместима с другими приложениями - она не станет хорошей основой для вашего продукта. К счастью, GTK+ лишен этих недостатков. Его программный интерфейс (API) последователен (если не считать редкие соглашения для обратной совместимости), легок в изучении и использовании. Именно поэтому программисты так любят GTK+. Надлежащим образом создатели GTK+ позаботились о том, чтобы избежать несовместимости с другими библиотеками: пространство имен тщательно продумано (с учетом используемых языков программирования), число экспортируемых функций сведено к минимуму, чтобы сделать библиотеку надежней и ускорить сборку программ. Система сборки
Так как во время разработки программы приходится тысячи раз её компилировать, чтобы освободиться от необходимости делать это каждый раз вручную, возникает потребность в автоматической системе сборки приложения. И так как система сборки адресует всю собираемую программу, необходимо быть уверенным, что все части хорошо взаимодействуют друг с другом. Здесь GTK+ поистине превосходен. Без преувеличения, он имеет только одну точку взаимодействия: команду Не существует и каких-либо специальных требований по использованию GTK+, все, что действительно нужно, чтобы использовать его - это включить в программу один заголовочный файл. Ни каких препроцессоров или специальных компиляторов не требуется, так же как и ничего другого, что может выдать непредсказуемый результат. Сам GTK+ использует GNU Autotools, поэтому в нем есть готовые макросы для Autoconf и Automake (написанные для проекта GNOME), которые позволяют находить и конфигурировать библиотеки GTK+ одним вызовом. Но даже если вы используете другую систему сборки, вы можете легко интегрировать GTK+ в неё. Все что для этого нужно - это правильно определенный вызов Распространяем готовый продуктРаспространение готового приложения среди пользователей в высшей степени зависит от платформы, которую они используют, так что нужно подготовиться к тому, что способ интеграции вашего приложения и GTK+ будет меняться от системы к системе. На платформе UNIX и, в частности, на Linux® GTK+ представляет собой системную библиотеку, распространяемую поставщиком ОС. Если вам не подходит предустановленный в системе GTK+ или он там отсутствует, можете обратиться к проекту Autopackage (см. ресурсы). Autopackage - это решение, позволяющее собирать пакеты, которые автоматически установят недостающие библиотеки. На платформе Windows существует большое число инсталляторов. Для распространения большинства программ, включая GTK+, широко используется стандартный инсталлятор Windows InstallShield, а так же Nullsoft's NSIS. Все двоичные дистрибутивы библиотеки GTK+ используют стандартные ключи реестра и конфигурационные данные, позволяя разным приложениям совместно использовать одну и ту же копию библиотеки. КроссплатформенностьВ зависимости от целевой системы способ доступа к библиотеке (и соответственно способ установки программы) может изменяться:
Существует пара замечаний относительно GTK+ на Mac OS X. Во всех выпущенных к настоящему времени версиях библиотеки, вы должны использовать GTK+ через мост Apple's X11-to-OS X. Однако в текущую разрабатываемую версию, был добавлен новый, родной для оконной системы Mac OS X интерфейс, который в ближайшем будущем позволит достичь такого уровня интеграции, который сейчас наблюдается на платформе Win32. Так же вам нужно четко представлять, что в GTK+ означает совместимость на уровне двоичного интерфейса (ABI). Разработчики библиотеки стараются сохранить обратную совместимость GTK+, но для вашего приложения это означает только то, что будет сохранена совместимость с новыми версиями GTK+. В частности, даже если исходный код использует API версии 2.2 , но приложение скомпилировано с использованием библиотек версии 2.6, получившийся исполняемый файл не будет работать с библиотеками версии 2.2. А все потому, что во время компиляции использовались ссылки на последнюю версию ABI, которые на более ранних версиях при вызове выдают ошибки. Чтобы достичь совместимости на уровне двоичного кода с более ранней версией библиотеки, например 2.2, нужно установить GTK+ этой версии, т.е. 2.2 и компилировать программу с использованием заголовочных файлов этой библиотеки. Хотя это и не самый простой способ для разработчиков, зато он единственно надежный. Существуют и альтернативные подходы к решению этой проблемы, например, выявив параметры версии, можно указать их при компиляции, чтобы переключиться между версиями заголовочных файлов. Кстати, этот прием используется в наборе инструментальных средств разработки Windows SDK. Однако этот метод имеет и отрицательную сторону, в результате заголовочные файлы программы становятся трудны для понимания и соответственно для поддержки, а иногда даже вызывают непредсказуемое поведение программы. По этим причинам разработчики GTK+ решили отказаться от такого метода компиляции. Если вы используете Linux, вы можете заполучить старые заголовочные файлы GTK+ в удобно упакованном виде вместе с остальными инструментами, упрощающими создание исполняемых файлов для множества дистрибутивов, посетив сайт проекта Autopackage. Подгоняем GTK+ к нашим нуждам.Иногда вам могут не подойти настройки GTK+ по умолчанию. Причина этого может быть двояка: или вы хотите получить дополнительные возможности, которые отсутствуют в базовом наборе, или хотите повлиять на некоторые аспекты работы библиотеки, дабы она лучше соответствовала вашим нуждам. Первый случай разрешается достаточно просто. Необходимо найти внешнюю библиотеку, предоставляющую желаемые функции. Есть несколько мест, где можно начать поиск такой библиотеки. Очень часто нужды, схожие с вашими, появляются в больших проектах, таких как GNOME. По этой причине в GNOME существует несколько модулей, которые выполняют роль «песочницы», в которой функции находятся до тех пор, пока не «созреют» для включения в состав GTK+, тем не менее, они полезны и отлично работают. Наиболее примечательный модуль такого рода в GNOME CVS называется libegg . Можно также поискать на сайтах, которые предоставляют хостинг открытым проектам, таких как SourceForge.net и freshmeat. Другие случаи возникают, когда вам нужно изменить некоторые аспекты самого GTK+. Например вам может потребоваться запустить GTK+ на встраиваемом устройстве с редкой архитектурой или добавить поддержку какого-нибудь особого типа взаимодействия с пользователем. В зависимости от ваших потребностей (и возможностей), существует несколько вариантов решения этой задачи. В простейшем случае вы можете просто подписаться на список почтовой рассылки и там спросить, не делал ли кто-нибудь до вас то, что вы ищете. Если ваши изменения находятся в зоне общих интересов проекта и сделаны качественно, существует большая вероятность того, что они попадут в главную ветвь разработки GTK+. Однако, если ваш проект очень сложен, вы можете решиться и нанять специализированную консалтинговую компанию, которая поможет наладить контакты с сообществом и выявить критические точки вашего проекта. Именно так поступила компания Nokia, решив использовать GTK+ как основу интерфейса для своей новой линейки мобильных устройств. Результатом этого решения явилось появление платформы maemo, которая была радушно воспринята сообществом. Осторожный выбор партнеров и методов может привести к созданию проекта, выгодного обеим сторонам. Компания сможет привлечь к проекту множество опытных разработчиков, жаждущих попробовать новую игрушку, в то же время сообщество получит множество усовершенствований, сделанных во время работы над проектом и еще один способ использования библиотеки, расширяющий круг возможностей GTK+. Сообщество GTK+
Все время в течение вашего общения с GTK+, сообщество, собранное вокруг него, будет вашей службой поддержки. Поэтому важно, чтобы вы знали с чего начать. Это знание сбережет массу вашего времени и убережет вас от потенциального недопонимания при общении. Люди, занимающиеся разработкой, связанной с GTK+, в основном ориентируются на три списка рассылки:
Разработчики GTK+ регулярно читают все эти три списка рассылки, так что не волнуйтесь о том, что ваше сообщение пропустят. Другая вещь, о которой вы должны иметь представления, называется Bugzilla. Это система регистрации ошибок, в которой так же есть база данных об ошибках в GTK+. Если вы заметили какое-то странное или нелогичное поведение программы GTK+, прежде чем сообщать об этой ошибке в списках, посмотрите в Bugzilla, не сообщил ли уже кто о ней до вас. Здесь вы также можете высказать свои предложения, чтобы помочь сделать GTK+ еще лучше. Не стесняйтесь зарегистрировать что-то, в чем вы не уверены, главное опишите это подробно. Самое плохое, что может случиться, - это кто-нибудь поставит метку Помимо этих источников информации, вы можете оперативно получить поддержку на многих каналах IRC (чатах). Главным сервером всех чатов по GTK+ является GIMP.net. На каналах Когда вы соприкоснетесь с сообществом, вы обнаружите там множество замечательных и известных людей. Поэтому можно получить массу удовольствия, работая вместе с такими людьми, помогая кому-то еще с хорошо знакомыми вам вещами. Чтобы не разочароваться в сообществе, запомните две вещи: во-первых, вовсе не обязательно, что на вас сразу обратят внимание, и второе, что все будет в порядке. Взгляд в будущееРазработка GTK+ сосредоточена на совершенствовании инструментария и облегчении труда разработчиков, поэтому с каждой новой версией в нем появляются новые функции, призванные сделать жизнь программистов проще. Поэтому в GTK+ реализовано несколько стандартов взаимодействия, похожих на те, которые определены проектом freedesktop. Тем не менее, в настоящее время, разрабатывается один очень интересный проект, цель которого оказать поддержку независимым поставщикам ПО (ISV) и сделать процесс поиска нужных инструментов разработчика более простым. Эта работа проводится в рамках проекта Ridley и состоит из интеграции множества ранее независимых библиотек и модулей в одну, простую в использовании и согласованную платформу. Например, в GTK+ будет интегрирована часть из существующих сегодня библиотек GNOME, дабы использовать их возможности на платформах, где работает GTK+. Среди таких библиотек, библиотека libglade, с которой вы уже познакомились в части 2, она уже запланирована на включение в состав платформы GTK+. Ожидается, что после завершения проекта Ridley получившаяся в результате платформа получит номер 3, т.е. появится GTK+ версии 3.0 (при этом совместимость с текущей веткой 2.x будет сохранена). ЗаключениеВ этой, последней статье цикла "Основы GTK+" вы познакомились со многими аспектами создания успешного программного продукта. Вы увидели, как GTK+ поддерживается на разных платформах, как лучше распространить ваше приложение среди пользователей. Узнали пути, которыми вы можете изменить GTK+, чтобы он лучше соответствовал вашим нуждам. В заключение, вы получили краткую справку о будущей версии платформы и информацию о том, где начать ваше большое путешествие с GTK+. Я надеюсь, что мы скоро встретимся с вами на одном из списков рассылки, или возможно даже в чате. До скорых встреч! |