Основи gtk, частина 3 розгортання додатки gtk як розгортати gtk

Цей контент є частиною серії: Основи GTK +, частина 3: Розгортання додатки GTK +.

Слідкуйте за виходом нових статей цієї серії.

Унікальність - це гарна риса, але не для бібліотеки. Що стосується програмного забезпечення, широка популярність і популярність означає більше оглядів, більше повідомлень про помилки (і як наслідок, їх усунення), більше шансів, що ПЗ буде протестовано в незвичайних середовищах і нетипових ситуаціях. Все це веде тільки до поліпшення і спрощення використання бібліотеки. На щастя, GTK + досить велика фігура серед інструментаріїв і один з найбільш широко використовуваних пакетів ПО. Подивіться на наступний список різних платформ, на яких працює GTK +:

конвеєр додатки

Подобатися вам чи ні, розробка програми полягає не тільки з приємного написання рядків коду. Щоб створити успішний продукт, перш за все, потрібно створити конвеєр, який дозволить вашим розробником нормально працювати.

програміст

Найбільш критична частина такого конвеєра - це, звичайно, програміст. Якщо бібліотека складна у використанні, має дивні вимоги або погано сумісна з іншими додатками - вона не стане хорошою основою для вашого продукту. На щастя, GTK + позбавлений цих недоліків. Його програмний інтерфейс (API) послідовний (якщо не брати до уваги рідкісні угоди для забезпечення сумісності), легкий у вивченні і використанні. Саме тому програмісти так люблять GTK +. Належним чином творці GTK + подбали про те, щоб уникнути несумісності з іншими бібліотеками: простір імен ретельно продумано (з урахуванням використовуваних мов програмування), число експортованих функцій зведено до мінімуму, щоб зробити бібліотеку надійніше і прискорити складання програм.

система збирання

Команда pkg-config

Команда pkg-config славиться за свій простий підхід до справи. Цей підхід відрізняється від традиційних способів пошуку бібліотек на UNIX-системах, які в своєму большіінстве пропонують використовувати ретельно продумані (але, на жаль, містять помилки) скрипти. На відміну від них, в GTK + був реалізований інший метод - використовувався один точно налаштований скрипт gtk-config (а також glib- і gnome-config). У версії 2.0 цей метод був приведений в порядок і перетворений в універсальне рішення, назване pkg-config. і представлений для стандартизації в проект freedesktop. Нове рішення виявилося настільки зручним, що де-факто стало стандартом пошуку бібліотек. А завдяки докладної документації, для помилок в ньому залишилося занадто мало місця.

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

Сам GTK + використовує GNU Autotools, тому в ньому є готові макроси для Autoconf і Automake (написані для проекту GNOME), які дозволяють знаходити і конфігурувати бібліотеки GTK + одним викликом. Але навіть якщо ви використовуєте іншу систему збирання, ви можете легко інтегрувати GTK + в неї. Все що для цього потрібно - це правильно певний виклик pkg-config. Якщо ж ви використовуєте систему, засновану на каталогах (таку як Microsoft Visual Studio) - просто включите кілька каталогів в шлях збірки.

Поширюємо готовий продукт

Поширення готового додатка серед користувачів у вищій мірі залежить від платформи, яку вони використовують, так що потрібно підготуватися до того, що спосіб інтеграції вашої програми і GTK + змінюватиметься від системи до системи. На платформі UNIX і, зокрема, на Linux® GTK + являє собою системну бібліотеку, поширювану постачальником ОС. Якщо вам не підходить встановлений в системі GTK + або він там відсутній, можете звернутися до проекту Autopackage (див. Ресурси). Autopackage - це рішення, що дозволяє збирати пакети, які автоматично встановлять відсутні бібліотеки.

На платформі Windows існує велика кількість інсталяторів. Для поширення більшості програм, включаючи GTK +, широко використовується стандартний інсталятор Windows InstallShield, а так само Nullsoft's NSIS. Всі виконавчі дистрибутиви бібліотеки GTK + використовують стандартні ключі реєстру і конфігураційні дані, дозволяючи різним додаткам спільно використовувати одну і ту ж копію бібліотеки.

Кросплатформеність

Залежно від цільової системи спосіб доступу до бібліотеки (і відповідно спосіб установки програми) може змінюватися:

  • Що стосується Linux дистрибутивів, ви можете тверезо розсудити, що GTK + буде доступний як стандартний пакет. Більшість дистрибутивів досить швидко включають в свій склад останні випуски GTK +, тому майже на 100% можна розраховувати, що як мінімум один з двох останніх випусків GTK + буде включений в дистрибутив користувача. Однак так як ніхто не гарантує, що всі користувачі будуть використовувати свіжий дистрибутив Linux, намагайтеся націлюватися на найбільш стару версію Linux, в якій ваша програма зможе працювати;
  • На комп'ютерах під управлінням Windows GTK + абсолютно сторонній компонент. Однак, завдяки однаковому розміщення різних пакетів установки, ви можете повністю покластися на існуючу установку GTK +, якщо така є, або зробити власну в іншому випадку. Так як установка виконується середовища GTK + включена в ваш процес інсталяції, ви можете більш вільно вибирати цільову версію бібліотеки, але по можливості дотримуйтеся старіших версій;
  • Для Mac OS X, GTK + так само повністю чужий пакет програм. На цій системі буде безпечніше створити самодостатній пакет, щоб уберегти користувача від проблем з залежностями. Щоб подивитися на приклад такого пакета, погляньте, як зібраний Gimp.app (див. Ресурси).

Існує пара зауважень щодо 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 + на вбудовуваному пристрої з рідкісною архітектурою або додати підтримку якогось особливого типу взаємодії з користувачем. Залежно від ваших потреб (і можливостей), існує кілька варіантів вирішення цього завдання.

Однак, якщо ваш проект дуже складний, ви можете зважитися і найняти спеціалізовану консалтингову компанію, яка допоможе налагодити контакти з спільнотою і виявити критичні точки вашого проекту. Саме так вчинила компанія Nokia, вирішивши використовувати GTK + як основу інтерфейсу для своєї нової лінійки мобільних пристроїв. Результатом цього рішення стала поява платформи maemo, яка була радо сприйнята спільнотою. Обережний вибір партнерів і методів може привести до створення проекту, вигідного обом сторонам. Компанія зможе залучити до проекту безліч досвідчених розробників, спраглих скуштувати нову іграшку, в той же час співтовариство отримає безліч удосконалень, зроблених під час роботи над проектом і ще один спосіб використання бібліотеки, що розширює коло можливостей GTK +.

Спільнота GTK +

Хакери і GTK +

У списках розсилки і інших матеріалах ви побачите згадки про хакерів. Це не означає, що хтось намагається зламати програму. Насправді це показник того, що хтось працює і добре знайомий з продуктом, зберігаючи вихідний сенс програми. Тому ви можете бачити посилання на GTK + хакерів, GNOME хакерів і інших в повідомленнях форумів і списках розсилки.

Весь час протягом вашого спілкування з GTK +, співтовариство, зібране навколо нього, буде вашою службою підтримки. Тому важливо, щоб ви знали з чого почати. Це знання збереже масу вашого часу і вбереже вас від потенційного непорозуміння при спілкуванні.

Люди, що займаються розробкою, пов'язаної з GTK +, в основному орієнтуються на три списки розсилки:

Розробники GTK + регулярно читають всі ці три списки розсилки, так що не хвилюйтеся про те, що ваше повідомлення пропустять.

Інша річ, про яку ви повинні мати уявлення, називається Bugzilla. Це система реєстрації помилок, в якій так само є база даних про помилки в GTK +. Якщо ви помітили якесь дивне або нелогічне поведінку програми GTK +, перш ніж повідомляти про цю помилку в списках, подивіться в Bugzilla, не повідомила чи вже хто про неї до вас. Тут ви також можете висловити свої пропозиції, щоб допомогти зробити GTK + ще краще. Не соромтеся зареєструвати щось, у чому ви не впевнені, головне опишіть це докладно. Найгірше, що може статися, - це хто-небудь поставить позначку NOTABUG (не помилка) на вашому повідомленні.

Крім цих джерел інформації, ви можете оперативно отримати підтримку на багатьох каналах IRC (чатах). Головним сервером всіх чатів по GTK + є GIMP.net. На каналах #gtk і # gnome зазвичай можна знайти людей, які можуть вам допомогти. Але будьте чемні і терплячі: "можна" це не означає, що "протягом 5 хвилин".

Коли ви зіткнетеся з спільнотою, ви виявите там безліч чудових і відомих людей. Тому можна отримати масу задоволення, працюючи разом з такими людьми, допомагаючи комусь ще з добре знайомими вам речами. Щоб не розчаруватися в співтоваристві, запам'ятайте дві речі: по-перше, зовсім не обов'язково, що на вас відразу звернуть увагу, і друге, що все буде в порядку.

Погляд у майбутнє

Розробка GTK + зосереджена на вдосконаленні інструментарію і полегшенні праці розробників, тому з кожною новою версією в ньому з'являються нові функції, покликані зробити життя програмістів простіше. Тому в GTK + реалізовано кілька стандартів взаємодії, схожих на ті, які визначені проектом freedesktop (див. Ресурси).

Тим не менш, у даний час, розробляється один дуже цікавий проект, мета якого надати підтримку незалежним постачальникам ПЗ (ISV) і зробити процес пошуку потрібних інструментів розробника простішим. Ця робота проводиться в рамках проекту Ridley і складається з інтеграції безлічі раніше незалежних бібліотек і модулів в одну, просту у використанні і узгоджену платформу. Наприклад, в GTK + буде інтегрована частина з існуючих сьогодні бібліотек GNOME, щоб використовувати їх можливості на платформах, де працює GTK +. Серед таких бібліотек, бібліотека libglade, з якої ви вже познайомилися в частині 2. вона вже запланована на включення до складу платформи GTK +. Очікується, що після завершення проекту Ridley вийшла в результаті платформа отримає номер 3, тобто з'явиться GTK + версії 3.0 (при цьому сумісність з поточною гілкою 2.x буде збережена).

висновок

У цій, останній статті циклу "Основи GTK +" ви познайомилися з багатьма аспектами створення успішного програмного продукту. Ви побачили, як GTK + підтримується на різних платформах, як краще поширити ваше додаток серед користувачів. Дізналися шляху, якими ви можете змінити GTK +, щоб він краще відповідав вашим потребам. На закінчення, ви отримали коротку довідку про майбутній версії платформи і інформацію про те, де почати ваше велике подорож з GTK +.

Я сподіваюся, що ми скоро зустрінемося з вами на одному зі списків розсилки, або можливо навіть в чаті. До зустрічі!

Ресурси для скачування

Схожі теми

  • Відвідайте головну сторінку проекту GTK + GTK.org;
  • Відкрийте для себе autopackage - систему установки пакетів для багатьох дистрибутивів Linux;
  • Завантажте Gimp.app. приклад пакета програми GTK + для Mac OS X;
  • Портал SourceForge надає хостинг багатьом проектам додатків і бібліотек GTK +;
  • Відвідайте репозиторій різних проектів freshmeat. в ньому є і проекти GTK +;
  • Подивіться на систему реєстрації помилок в GNOME і GTK + GNOME Bugzilla;
  • Ознайомтеся з проектом freedesktop;
  • Проект Ridley присвячений висновку GTK + на новий рівень;
  • Відвідайте сайт developerWorks Opensource. щоб отримати більше інформації про методи, засоби та зміни в проектах для розробки з використанням відкритих технологій і їх використання з продуктами IBM.
  • Використовуйте інновації у Вашому наступному відкритому проекті за допомогою IBM trial software. доступного для завантаження і на DVD.