Я установил 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?
При использовании 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
Эран
Не возитесь с включениями, используйте PKG-конфигурации вместо:
g++ foo.cc -o foo `pkg-config gtkmm-3.0 --cflags --libs`
Кстати, ваш пример компилируется и работает просто отлично.