2011-07-15 46 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)