Как заставить GTK работать с C++?

Я пытаюсь начать учиться разрабатывать приложения GTK+ в 64-разрядной версии Ubuntu 17.04, используя C++ с Eclipse CDT IDE, и у меня возникли проблемы при попытке включить библиотеку GTK. Мне интересно, почему включения не работают. У меня установлен gtk 2.0 (DEV) и недавно установлен gtk 3.0, чтобы посмотреть, поможет ли это, но безрезультатно. Ниже приведен мой код:

#include <iostream>
#include <gtk/gtk.h>

int main()
{
    return 0;
}

Я использую следующие флаги компилятора:

-I/usr/include/gtk-3.0 -I/usr/include/glib-2.0 -O0 -g3 -Wall -c -
fmessage-length=0

Я получаю следующую ошибку от моего компилятора:

g++ -I/usr/include/gtk-3.0 -I/usr/include/glib-2.0 -O0 -g3 -Wall -c -
fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.o" -o "main.o" 
"../main.cpp"
In file included from /usr/include/glib-2.0/glib/galloca.h:32:0,
             from /usr/include/glib-2.0/glib.h:30,
             from /usr/include/gtk-3.0/gdk/gdkconfig.h:13,
             from /usr/include/gtk-3.0/gdk/gdk.h:30,
             from /usr/include/gtk-3.0/gtk/gtk.h:30,
             from ../main.cpp:2:
/usr/include/glib-2.0/glib/gtypes.h:32:24: fatal error: glibconfig.h: 
No such file or directory
 #include <glibconfig.h>
                    ^
compilation terminated.
make: *** [main.o] Error 1
subdir.mk:18: recipe for target 'main.o' failed

person zgillis    schedule 28.08.2017    source источник


Ответы (1)


Используя pkg-config для флагов компилятора, вам необходимо включить библиотеку gtk+-2.0 и ее зависимости. Добавление этого к вашей команде компилятора устраняет проблему.

В Eclipse CDT это можно найти в разделе «Свойства проекта» -> «Сборка C/C++» -> «Настройки» -> «Компилятор GCC C++», а затем отредактировать «Команду».

g++ `pkg-config --cflags --libs gtk+-2.0`
person zgillis    schedule 28.08.2017
comment
Я думаю, что даже косвенно предлагать Gtk+2 для (очевидно) разработки новых приложений в 2017 году просто неправильно. Может быть, перейти на gtk 3 и упомянуть о возможности использования 2, если это нужно устаревшему коду? - person Jussi Kukkonen; 29.08.2017
comment
Согласен, GTK 4 на подходе, дела продвигаются. Просто используйте GTK 3, это стабильная версия уже много лет. - person liberforce; 07.09.2017