Gtkmm编译错误

3

操作系统:Windows 7

编译器:MinGW

集成开发环境:Code::Blocks

我刚刚在我的电脑上安装了Gtkmm,路径为C:/gtkmm/,并设置了一个示例程序。当我编译它时,出现错误“gtkmm.h: No such file or directory”。

我尝试将PATH变量设置为C:/gtkmm/include和C:/gtkmm/gtkmm-2.4,但都没有起作用。然后我尝试使用#include "C:/gtkmm/include/gtkmm-2.4/gtkmm.h",结果会提示找不到几十个文件的错误。

我还听说需要在编译器选项中加入pkg-config gtkmm-2.4 --cflags --libs,但也没有起作用。

我做错了什么,该怎样解决?

3个回答

2

pkg-config是一个辅助函数,用于将cflags和lib路径添加到编译器行中。

您需要做的是将库和cflags路径添加到编译器行中。我不确定如何在code::blocks中完成这个操作,但您可以尝试一下。

在Ubuntu 11.04中,即使是一个简单的gtkmm程序,您也需要以下所有内容才能进行编译:

Libs (pkg-config --libs gtkmm-2.4:

-pthread -lgtkmm-2.4 -latkmm-1.6 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lgtk-x11-2.0 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0

cflags路径(pkg-config --cflags gtkmm-2.4):

-I/usr/include/atk-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gio-unix-2.0/ -I/usr/include/gtkmm-2.4 -I/usr/lib/gtkmm-2.4/include -I/usr/include/atkmm-1.6 -I/usr/include/giomm-2.4 -I/usr/lib/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/pangomm-1.4/include -I/usr/include/gtk-2.0 -I/usr/include/gtk-unix-print-2.0 -I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/cairomm-1.0 -I/usr/lib/cairomm-1.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/lib/gtk-2.0/include -I/usr/include/gdk-pixbuf-2.0

基本上,您需要更改每个实例的/usr/include//usr/lib/c:\path-to-library\

我不确定您在MinGW中需要多少以上内容,但是在Linux上使用GCC,删除任何一个都会导致gtkmm程序无法编译。希望这至少能让您走上正确的道路。


天啊,那真的很糟糕...也许我可以制作/找到一个项目模板来代替我做这件事。 - ConsciousCode
是的,这是在Linux上进行gtkmm编程的好处之一。所有这些都被包装在一个简单的命令中。 如果可以的话,我建议您查看Eclipse。它有非常简单的方法来添加包含目录和库。 - Christian Smith

1
你说的 PATH 变量是什么意思?全局的 Windows 搜索 PATH 用于可执行文件?那是错误的。
你需要在你的 IDE 中查找“包含搜索路径”或“头文件搜索路径”之类的内容。
当你在命令行上执行 pkg-config 命令时,它是否能正常工作?在 Unix 系统上使用 pkg-config 时,它会被反引号 ` 包围,这会导致它被替换为其输出。不知道你的 IDE 是否可以做到这一点,但如果它在命令行上工作,则至少有一个所需包含的列表。

0
使用Autotools C++项目。您只需要编辑两个文件configure.acMakefile.am。 将此行添加到configure.ac中。
PKG_CHECK_MODULES([GTKMM], [gtkmm-3.0])

并将这些行添加到Makefile.am文件中

program_CPPFLAGS = $(GTKMM_CFLAGS)

program_LDADD = $(GTKMM_LIBS)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接