我使用aptitude在Ubuntu 13.04上安装了gtkmm 3(我喜欢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;
}
在追逐来自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"' ----------Building project:[ 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 In file included from //usr/include/glib-2.0/glib/gtypes.h:36:0, from //usr/include/glib-2.0/glib/galloca.h:34, from //usr/include/glib-2.0/glib.h:32, from /usr/include/glibmm-2.4/glibmm/thread.h:46, from /usr/include/glibmm-2.4/glibmm.h:87, from /usr/include/gtkmm-3.0/gtkmm.h:87, from main.cpp:16: ***//usr/include/glib-2.0/glib/gversionmacros.h:179:2: error: #error "GLIB_VERSION_MIN_REQUIRED must be >= GLIB_VERSION_2_26"*** In file included from //usr/include/glib-2.0/glib/galloca.h:34:0, from //usr/include/glib-2.0/glib.h:32, from /usr/include/glibmm-2.4/glibmm/thread.h:46, from /usr/include/glibmm-2.4/glibmm.h:87, from /usr/include/gtkmm-3.0/gtkmm.h:87, from main.cpp:16: ***//usr/include/glib-2.0/glib/gtypes.h:448:2: error: #error unknown ENDIAN type ....... make: *** [All] Error 2 2 errors, 2 warnings***
(尝试使用gtkmm 2.4时也遇到了同样的问题)
显然我在这里遗漏了一些东西。我究竟做错了什么?我还需要做什么来构建gtkmm项目?
答案 0 :(得分:4)
使用gtkmm时,建议使用pkg-config工具。 您也可以从codelite执行此操作:
右键点击您的项目:设置 - &gt;常用设置 - &gt;编译器 - &gt; C ++编译器选项: 并添加:
$(shell pkg-config gtkmm-3.0 --cflags)
如果您有其他选择,则应采用分号分隔
接下来,将以下内容添加到链接器选项: 右键单击您的项目:设置 - &gt;常用设置 - &gt;链接器 - &gt;选项:
$(shell pkg-config gtkmm-3.0 --libs)
再次,如果你有其他选择,它们应该是以分号分隔的
删除上面添加的所有硬编码包含路径2应该足够
注意:
在codelite的论坛上也回答了这个问题: http://forums.codelite.org/viewtopic.php?f=11&t=1396&p=6416&hilit=gtkmm#p6410
叶兰
答案 1 :(得分:3)
不要使用包含,而是使用 pkg-config :
g++ foo.cc -o foo `pkg-config gtkmm-3.0 --cflags --libs`
不过,你的例子编译并运行得很好。