Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

GTK-Rus - все о программировании с использованием GTK Внеочередной выпуск


GTK-Rus
Выпуск внеочередной
I. Введение

Доброго всем времени суток. Прошу прощения за маленькую задержку. Как выяснилось за прошедшее с прошлого выпуска время, среди нас есть люди, которых интересует использование GTK под Windows. В связи с этим, я бы хотел несколько слов сказать по установке и настройке программ для этих целей. Рассматривать подобный вопрос в отношении Linux мне представляется не нужным, так как там все достаточно очевидно. Хотя, если у вас будут проблемы, пишите.

II. Теория

Итак, начнем. Для начала нам нужен компилятор. В Linux с этим просто - gcc, поэтому предлагаю на заморачиватья и использовать для наших целей MinGW - порт gcc под Windows.

Идем на http://www.mingw.org и скачиваем инсталлятор - MinGW-*.exe (порядка 15 мегабайт), где вместо * - стоит номер версии. Запускаем, инсталлируем. В дальнейшем я буду предполагать, что он у вас установлен в C:\mingw.

Для нормальной работы нам нужна консоль, поэтому идем на http://win-bash.sourceforge.net/ и скачиваем win-bash.exe, можно положить ее, например, в C:\bash, переименовав в bash.exe (чтобы бы было удобно использовать в дальнейшем).

Теперь нам необходимо, чтобы по команде gcc из консоли, происходил вызов компилятора. Для этого, идем в Пуск/Настройка/Панель управления/Система/Дополнительно/Переменные среды (описано для win2k и winxp). В переменную PATH, через точку с запятой добавляем: C:\mingw\bin и C:\bash.

После этого можно приступить непосредственно к установке GTK. Идем на http://www.gimp.org/~tml/gimp/win32/downloads.html. и скачиваем оттуда следующие пакеты:

gtk+-*.zip
gtk+-dev-*.zip
glib-*.zip
glib-dev-*.zip
pango-*.zip
pango-dev-*.zip
atk-*zip
atk-dev-*.zip
cario-*.zip
cario-dev-*.zip
gettext-*.zip
gettext-dev-*.zip
libpng-*-lib.zip
libpng-*-bin.zip
libiconv-*.bin.woe.zip
pkg-config-*.zip

Распаковываем pkg-config-*.zip, из папки bin достаем pkg-config.exe и переносим ее в C:\mingw\bin, чтобы не заморачиваться с путями.

Добавляем в переменные среды PKG_CONFIG_PATH=C:\mingw\pkg-config-info, предварительно создав эту папку.

Распаковываем gtk+-dev-*.zip в gtk+-*. Копируем все из lib/pkgconfig в PKG_CONFIG_PATH. Открываем какой-нибудь pc-файл, и смотрим значение переменной prefix. Оно соответствует той директории, в которую мы должны положить include и lib. Поэтому либо оставляем все как есть, создаем папку по пути, указанному в prefix и копируем в нее распакованный архив (можно оставить только папки include и lib), либо изменяем ее значение и делаем все по-своему.

Тоже самое делаем для пакетов glib-*.zip, pango-*.zip, libpng-*.zip (только pc-файлы берем в libpng-*-bin.zip, а include и lib из libpng-*-lib.zip), atk-*.zip. Распаковываем пакеты gettext-dev-*.zip и libiconv-*.bin.woe.zip, после этого идем в PKG_CONFIG_PATH, открываем glib-2.0.pc и вместо строки

Libs: -L${libdir} -lglib-2.0 -lintl -liconv

вставляем что-то вроде

Libs: -L${libdir} -lglib-2.0 -Lпуть_к_gettext -Lпуть_к_iconv

Все оставшиеся, не develop пакеты надо распокавать, и все *.dll скопировать, например, в windows\system32

В качестве примера приведу то, что получилось у меня для текущих версий пакетов.

Компилятор MinGW установлен в C:\mingw, win-bash в C:\win-bash\bash.exe, а pkg-config.exe скопирована в C:\mingw\bin. В переменную среды PATH добавлены следующие значения: C:\mingw\bin и C:\win-bash. Создана новая переменная PKG_CONFIG_PATH=C:\mingw\pkg-config-info.

Создана папка C:\devel\target, в нее распакованы следующие пакеты (точнее только папки include и lib из них) с указанием имен:

atk-dev-1.10.3.zip -> atk-1.10.3
cairo-dev-1.2.6.zip -> cairo-1.2.6
gettext-dev-0.14.5.zip -> gettext-0.14.5
glib-dev-2.12.4.zip -> glib-2.12.4
gtk+-dev-2.8.20.zip -> gtk+-2.8.20
libiconv-1.9.1.bin.woe32.zip -> libiconv-1.9.1
libpng-1.2.8-lib.zip -> libpng-1.2.8
pango-dev-1.14.5.zip -> pango-1.14.5

При этом в папке C:\mingw\pkg-config-info содержатся следующие файлы:

atk.pc cairo.pc cairo-pdf.pc cairo-png.pc cairo-ps.pc cairo-svg.pc cairo-win32.pc gdk-2.0.pc gdk-pixbuf-2.0.pc gdk-win32-2.0.pc glib-2.0.pc gmodule-2.0.pc gmodule-no-export-2.0.pc gobject-2.0.pc gthread-2.0.pc gtk+-2.0.pc gtk+-win32-2.0.pc libpng.pc libpng13.pc pango.pc pangocairo.pc pangoft2.pc pangowin32.pc

Файлы libpng.pc и libpng13.pc были отредактированы: строка prefix=c:/progra~1/LibPng была заменена на prefix=c:/devel/target/libpng-1.2.8, а в файле glib-2.0.pc строка Libs: -L${libdir} -lglib-2.0 -lintl -liconv заменена на Libs: -L${libdir} -lglib-2.0 -Lc:/devel/target/libiconv-1.9.1 -Lc:/devel/target/gettext-0.14.5

После того, как все вышеописанные действия были проделаны, необходимо перезагрузить систему. Теперь создадим на диске C:, для приличия, папку projects, создадим в ней файл, например test.cpp и наберем в нем программку из прошлого выпуска. Переходим Пуск/Выполнить, вводим bash, и перед нами должно появиться окно консоли. Переходим в папку projects, дав команду:

cd projects

Все, можно откомпилировать этот пример, дав, как описывалось в прошлом выпуске, команду:

gcc test.cpp -o test.exe -mwindows `pkg-config --cflags --libs gtk+-2.0`

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

III. Заключение

Еще раз прошу прощения за задержку, постараюсь на днях написать следующий выпуск. Так же напоминаю, мой адрес safikus(at)gmail.com, если у вас возникнут вопросы, пишите. Всего вам доброго.


© 2006 Алексей Сафонов

В избранное