Spec-Zone.ru › GTK 3.24

Компиляция приложений GTK+

Компиляция приложений GTK+ — Как скомпилировать приложение GTK+

Компиляция приложений GTK+ в UNIX

Для компиляции приложения GTK+ необходимо указать компилятору, где находятся заголовочные файлы и библиотеки GTK+. Это делается с помощью утилиты pkg-config.

Следующий интерактивный сеанс оболочки демонстрирует использование pkg-config (фактический вывод на вашей системе может отличаться):

$ pkg-config --cflags gtk+-3.0
 -pthread -I/usr/include/gtk-3.0 -I/usr/lib64/gtk-3.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12
$ pkg-config --libs gtk+-3.0
 -pthread -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0

Простейший способ компиляции программы — использовать функцию "обратные кавычки" оболочки. Если вы заключите команду в обратные кавычки (не в одинарные кавычки), то её вывод будет подставлен в командную строку перед выполнением. Таким образом, для компиляции GTK+ «Привет, мир» вы введете следующее:

$ cc `pkg-config --cflags gtk+-3.0` hello.c -o hello `pkg-config --libs gtk+-3.0`

Функции GTK+, которые устарели, аннотированы для выдачи предупреждений компилятору при их использовании (например, в gcc необходимо использовать параметр -Wdeprecated-declarations). Если эти предупреждения проблематичны, их можно отключить, определив препроцессорную константу GDK_DISABLE_DEPRECATION_WARNINGS с помощью опции командной строки -DGDK_DISABLE_DEPRECATION_WARNINGS

Аннотации устаревания GTK+ имеют версионирование; определив макросы GDK_VERSION_MIN_REQUIRED и GDK_VERSION_MAX_ALLOWED, вы можете указать диапазон версий GTK+, API которых вы хотите использовать. API, которые устарели до или введены после этого диапазона, будут вызывать предупреждения компилятора.

Вот как вы бы скомпилировали hello.c, если хотите разрешить использование символов, которые не устарели в 3.2:

$ cc `pkg-config --cflags gtk+-3.0` -DGDK_VERSION_MIN_REQIRED=GDK_VERSION_3_2 hello.c -o hello `pkg-config --libs gtk+-3.0`

А вот как вы бы скомпилировали hello.c, если не хотите использовать какие-либо символы, введённые после 3.4:

$ cc `pkg-config --cflags gtk+-3.0` -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4 hello.c -o hello `pkg-config --libs gtk+-3.0`

Старая система отключения устаревших интерфейсов от компилятора с использованием препроцессорной константы GTK_DISABLE_DEPRECATED всё ещё используется для устаревших макросов, значений перечислений и т. д. Для обнаружения использования этих элементов в вашем коде используйте опцию командной строки -DGTK_DISABLE_DEPRECATED. Аналогичные константы GDK_DISABLE_DEPRECATED, GDK_PIXBUF_DISABLE_DEPRECATED и G_DISABLE_DEPRECATED существуют для GDK, GdkPixbuf и GLib.

Точно так же, если вы хотите убедиться, что ваша программа не использует функции, которые могут быть проблематичными в многоустройстве, вы можете определить препроцессорную константу GDK_MULTIDEVICE_SAFE, используя опцию командной строки -DGTK_MULTIDEVICE_SAFE=1.

Полезные макросы autotools

GTK+ предоставляет различные макросы для лёгкого проверки версии и поддерживаемых бэкэндов. Макросы:

AM_PATH_GTK_3_0([minimum-version], [if-found], [if-not-found], [modules])

Этот макрос должен использоваться для проверки того, что GTK+ установлен и доступен для компиляции. Четыре аргумента являются необязательными и представляют собой: minimum-version, минимальную требуемую версию GTK+; if-found, действие, которое необходимо выполнить, если найдена корректная версия GTK+; if-not-found, действие, которое необходимо выполнить, если корректная версия GTK+ не найдена; modules, список модулей, которые должны быть проверены наряду с GTK+.

GTK_CHECK_BACKEND([backend-name], [minimum-version], [if-found], [if-not-found])

Этот макрос должен использоваться для проверки того, поддерживается ли конкретный бэкэнд GTK+. Аргументы minimum-version, if-found и if-not-found являются необязательными.

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/gtk-compiling.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API