2011-07-15 49 views
3

操作系统:Windows 7gtkmm的编译错误

编译:MinGW的

IDE:代码::块

我刚刚安装的gtkmm我的计算机上的文件夹C:/ gtkmm的/,并设立示例程序。当我编译它,它给了错误“gtkmm.h:没有这样的文件或目录”

我试着设置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放在编译器选项中,但那也行不通。

我在做什么错,我该如何解决?

+0

没有人不知道吗? – ConsciousCode

回答

1

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

您需要做的是将库和cflags路径添加到编译器行。我不是100%肯定该怎么做,在代码::块,但

在Ubuntu 11.04,你需要所有这些编译甚至一个简单的gtkmm程序:

利布斯(pkg配置--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配置--clfags 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的海湾合作委员会,将任何人使得gtkmm的程序无法编译。希望至少能让你走上正确的道路。

+0

天哪,真的很烂...也许我可以制作/找到一个项目模板,为我做到这一点。 – ConsciousCode

+0

是的,这是Linux上gtkmm编程的好处之一。所有这一切都很好地包装在一个简单的命令。 我会检查出Eclipse,如果可以的话。它有一个非常简单的方法来添加包含目录和库。 – senshikaze

1

PATH变量是什么意思?全局窗口搜索可执行文件的PATH?那将是错误的。

你需要在你的IDE中寻找Include search pathheader search path或类似的东西。

当您在命令行上执行命令时,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)