编译gtkmm的问题

t3h*_*man 16 c++ eclipse gtkmm

操作系统:Fedora 14

编译:g ++(GCC)4.5.1 20100924(Red Hat 4.5.1-4)

我通过yum从存储库安装了gtkmm24-devel.为了确保安装按计划进行,我决定尝试使用页面上的一个示例.

#include <gtkmm.h>

int main(int argc, char *argv[]) {
    Gtk::Main kit(argc, argv);
    Gtk::Window window;
    Gtk::Main::run(window);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我跑了这个例子,嘿!它说找不到gtkmm.h,没问题,我只是忘了链接库.我通过Eclipse将/usr/include/gtkmm-2.4添加到我的库搜索中.没有bueno,g ++仍然无法找到它!

fatal error: gtkmm.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然后我尝试通过使用#include <gtkmm-2.4/gtkmm.h>和重新编译包含gtkmm ,另一个错误!:(

/usr/include/gtkmm-2.4/gtkmm.h:87:20: fatal error: glibmm.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

谢谢阅读.

kal*_*lev 23

简短的回答

使用'pkg-config gtkmm-2.4 --cflags'的输出作为包含路径,使用'pkg-config gtkmm-2.4 --libs'来链接库.

答案很长

它说找不到gtkmm.h,没问题,我只是忘了链接库.

构建C/C++程序分两个步骤完成.首先编译源文件,输出目标文件; 然后将目标文件链接在一起.您获得的错误来自编译步骤.

在Linux上,大多数库都附带了pkgconfig文件,以便其他程序更容易使用这些库.gtkmm还附带了自己的pkgconfig文件.

您正尝试手动指定/usr/include/gtkmm-2.4 for include path; 这是错的.而是使用pkgconfig的输出来确定头文件的位置.要获取gtkmm所需的所有包含目录,请使用以下命令:

pkg-config gtkmm-2.4 --cflags
Run Code Online (Sandbox Code Playgroud)

要进行链接,请使用以下pkgconfig命令获取需要链接的库:

pkg-config gtkmm-2.4 --libs
Run Code Online (Sandbox Code Playgroud)

您可以通过直接调用g ++在命令行上测试它.

g++ myfirstprogram.cpp -o myfirstprogram `pkg-config gtkmm-2.4 --cflags --libs`
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅gtkmm文档:http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-basics-simple-example.html.en