Учет требований GTK3 для сборки и компиляции программ в Debian "Wheezy"


   
 

Версия: 0.1 Aвтор: Андрей Ржавсков (Andrey Rjavskov [Rzhavskov]) as known rjaan


   
 

1.Введение

 
 

В настоящее время в Debian Wheezy поддерживается как GTK2, которая устанавливается по умолчанию, так и GTK3. Поэтому, для тех кто хочет использовать последнюю, нужно выполнить некоторые действия, чтобы установить deb-пакеты разработчику, с помощью которых осуществляется сборка и компиляция программ.

В качестве примера здесь приводится проект ugtkmainwindow, предусматривающий возможность сборки под третью версию GTK+. По умолчанию ugtkmainwindow собирается с учетом требований GTK2, а при запуске './configure' с опцией '--with-gtk3' инициируется сборка в сооветствие с требованиями GTK3. При этом для версии 1.0 она неизбежно завершится со следующей ошибкой:

 . . .
 
checking for GTK... no
configure: error: Package requirements (gtk+-3.0) were not met:
 
No package 'gtk+-3.0' found
 
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
 
Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
 
 . . .
   
 

2. Установка недостающих пакетов

 
 

Первое, что нужно сделать, убедиться, что библиотека libgtk-3 установлена (под правами суперпользователя root):

# dpkg -l | grep libgtk-3
ii   libgtk-3-0:i386   3.4.2-7   i386   GTK+ graphical user interface library
ii   libgtk-3-bin      3.4.2-7   i386   programs for the GTK+ graphical user interface library
ii   libgtk-3-common   3.4.2-7   all   common files for the GTK+ graphical user interface library

Затем, устанавливаем пакет libgtk-3-dev, содержащий заголовочные файлы и средства разработки, необходимые для сборки приложений с GTK3.

# apt-get install libgtk-3-dev libgtk-3-doc
   
 

3. Сборка проекта ugtkmainwindow

 
 

В корне проект ugtkmainwindow версии 1.1 выполнить:

# make distclean
# ./configure --with-gtk3

Версия 1.1 является модификацией версии 1.0 проекта ugtkmainwindow, целью которой было завершить реализацию поддержки сборки указанного проекта c учетом требований GTK3. Сначала, в заголовочных файлов и файлах исходного кода, с использование директивы HAVE_GTK3 были внесены необходимые изменения. После этого, в файле configure.ac сделаны изменения, выделенные жирным курсивом ниже.

## Copyright (C) 2013 Andrej Rzhavskov aka Rjaan mailto: rjaan@yandex.ru.
## This configure.ac is free software and issuing under license GPLv3.
 
AC_INIT([ugtkmainwindow], [1.0], [rjaan@yandex.ru])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_MACRO_DIR([m4])
AC_ARG_WITH([gtk], AS_HELP_STRING([--with-gtk3], [Build with the GTK+ interface]))
AS_IF([test "x$with_gtk3" = "xyes"],[
PKG_CHECK_MODULES([GTK], [gtk+-3.0],AC_DEFINE([HAVE_GTK3],[1],[use GTK3]))
],[
PKG_CHECK_MODULES([GTK], [gtk+-2.0])
])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
include/Makefile
libugtk-widgets/Makefile
])
AC_PROG_LIBTOOL
AC_OUTPUT
 
##eof

При запуске './configure' с явно указанной опцией '--with-gtk3' (в сооветствие с макросом AC_DEFINE) в заголовочном файле config.h будет создана препроцессорная директива HAVE_GTK3, используя которую разработчик имеет возможность учитывать требования, предъявляемые третьей версии библиотеки Gtk+ с сохранением возможности сборки под вторую.

   
 

4. Требования к коду для сборки GTK3

 
 

В отличии от второй версии GTK+, в третьей запрещено использовать какие-либо заголовочные файлы за исключением <gtk/gtk.h>. При игнорировании данного требования сборка будет немедленно завершена с ошибкой:

#error "Only <gtk/gtk.h> can be included directly."

В заголовочных файлах и файлов исходного кода необходимо включить автоматически созданный в корне проекта заголовочный файл config.h.

#include "config.h"

Об остальных изменений в третьей версии GTK+, читайте позднее, потому что они касаются непосредственного применения отдельных виджетов.

   
 

5. Библиография

 
 

5.1. Compile Gxsm-2.0 and Gxsm-Manual on Debian 7.0 'Wheezy'
5.2. Defining C Preprocessor Symbols
5.3. Пакет: libgtk-3-dev
5.4. Как собирать и cкомпилировать статическую библиотеку

   
   
Вернуться к Оглавлению

 Copyright © 2010-2014 rjaan as Andrey Rjavskov(Rzhavskov) <rjaan@yandex.ru> <arjavskov@gmail.com>
 
Сайт создан в системе uCoz