1

我使用 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"'
----------构建项目:[CalendarsGUI - 调试]----------
...........

/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: error: #error unknown ENDIAN type
…………
make: *** [全部] 错误 2
2 个错误,2 个警告***

(我在尝试使用 gtkmm 2.4 时也遇到了同样的问题)

显然我在这里遗漏了一些东西。我究竟做错了什么?我还需要做什么来构建 gtkmm 项目?

4

2 回答 2

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

伊兰

于 2013-06-28T03:52:02.510 回答
3

不要摆弄包含,请改用pkg-config

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

顺便说一句,您的示例编译并运行得很好。

于 2013-06-27T09:46:16.690 回答