Ошибки компиляции при попытке создать очень простое приложение gtkmm:

Я установил gtkmm 3 в Ubuntu 13.04, используя aptitude (мне нравится aptitude, потому что он помнит, что было установлено, когда вы хотите удалить его):

sudo aptitude install libgtkmm-3.0-dev --with-recommends

Используя codelite 5.1.2 и цепочку инструментов gtk ++ по умолчанию, в мой компилятор добавлены пути, которые я добавил:

/usr/include/gtkmm-3.0 — путь к gtkmm.h

Я попытался создать первый пример приложения в Программирование с помощью GTKMM:

#include <gtkmm.h>
int main ( int argc, char *argv[] )
{

Gtk::Main kit ( argc, argv );
Gtk::Window window;
Gtk::Main::run ( window );
return 0;

}

После поиска нескольких ошибок «include file not found» из файла gtkmm.h, который включает в себя всю инфраструктуру gtkmm, мой путь включения компилятора теперь выглядит следующим образом:

/usr/include/gtkmm-3.0
/usr/include/glibmm-2.4
/usr/lib/i386-linux-gnu/glibmm-2.4/include
/usr/include/glib-2.0

И весь ад вырывается из glib.h:

/ bin / sh -c 'make -j 4 -e -f "Calendars_wsp.mk"'
---------- Строительный проект: [CalendarsGUI - Debug] ----------
........

/gtkmm-3.0 -I / usr / include / glibmm-2.4 -I / usr / lib / i386-linux-gnu / glibmm-2.4 / include -I // usr / include / glib-2.0
В файле, включенном из //usr/include/glib-2.0/glib/gtypes.h:36:0,
от //usr/include/glib-2.0/glib/galloca.h:34,
из //usr/include/glib-2.0/glib.h:32,
из /usr/include/glibmm-2.4/glibmm/thread.h:46,
из /usr/include/glibmm-2.4/glibmm.h:87,
из /usr/include/gtkmm-3.0/gtkmm.h:87,
из main.cpp: 16:
*** // usr / include / glib-2.0 / glib / gversionmacros.h: 179: 2: ошибка: #error "GLIB_VERSION_MIN_REQUIRED должно быть> = GLIB_VERSION_2_26" ***
В файле, включенном из //usr/include/glib-2.0/glib/galloca.h:34:0,
из //usr/include/glib-2.0/glib.h:32,
из /usr/include/glibmm-2.4/glibmm/thread.h:46,
из /usr/include/glibmm-2.4/glibmm.h:87,
из /usr/include/gtkmm-3.0/gtkmm.h:87,
из main.cpp: 16:
*** // usr / include / glib-2.0 / glib / gtypes.h: 448: 2: ошибка: # ошибка неизвестный тип ENDIAN
.......
make: *** [All] Ошибка 2
2 ошибки, 2 предупреждения ***

(У меня тоже были такие же проблемы при попытке использовать gtkmm 2.4)

Очевидно, я что-то здесь упускаю. Что я делаю неправильно? Что еще мне нужно сделать, чтобы собрать проекты gtkmm?

1

Решение

При использовании gtkmm рекомендуется использовать инструмент pkg-config.
Вы также можете сделать это из codelite:

Щелкните правой кнопкой мыши по вашему проекту: Настройки -> Общие настройки -> Компилятор -> Параметры компилятора C ++:
и добавить:

$(shell pkg-config gtkmm-3.0 --cflags)

Если у вас есть другие варианты, они должны быть разделены точкой с запятой

Затем добавьте следующее к параметрам компоновщика:
Щелкните правой кнопкой мыши по вашему проекту: Настройки -> Общие настройки -> Линкер -> Параметры:

$(shell pkg-config gtkmm-3.0 --libs)

опять же, если у вас есть другие варианты, они должны быть разделены точкой с запятой

Удалите все жестко закодированные пути включения, которые вы добавили выше 2 должно быть достаточно

Замечания:

На этот точный вопрос также ответили на форуме Codelite:
http://forums.codelite.org/viewtopic.php?f=11&т = 1396&р = 6416&hilit = gtkmm # p6410

Эран

4

Другие решения

Не возитесь с включениями, используйте PKG-конфигурации вместо:

g++ foo.cc -o foo `pkg-config gtkmm-3.0 --cflags --libs`

Кстати, ваш пример компилируется и работает просто отлично.

3

По вопросам рекламы [email protected]