2013-06-27 141 views
1

我用aptitude安装gtkmm的3在Ubuntu 13.04(我喜欢资质,因为它会记住安装什么,当你想删除它):编译器错误试图建立非常简单gtkmm的应用程序时:

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

此错误信息似乎很清楚对我来说:#error“GLIB_VERSION_MIN_REQUIRED必须> = GLIB_VERSION_2_26”,而且你似乎只安装了2.0版本的glib。 –

+0

看起来你是对的 - 但我根据GTKMM网站上的说明安装了3.0,并且似乎有唯一版本的glib.h。 GTKMM文档确实说,安装的版本并不总是与他们发布的实际代码库同步。 – Vector

+0

@JoachimPileborg - 似乎我并不孤单。在SE/AskUbuntu上有很多类似的问题。他们说Unity似乎跟gtkmm没有太大关系....顺便说一句,感谢编辑。 – Vector

回答

4

使用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&t=1396&p=6416&hilit=gtkmm#p6410

叶兰

+0

我看到在codelite中创建新项目对话框提供了一个选项来创建一个gtkmm项目并自动添加这些标志。 – Vector

3

不要拨弄包括,使用pkg配置代替:

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

顺便说一句,你的榜样编译和运行就好了。

相关问题