2013-06-27 156 views
1

我用aptitude安裝gtkmm的3在Ubuntu 13.04(我喜歡資質,因爲它會記住安裝什麼,當你想刪除它):編譯器錯誤試圖建立非常簡單gtkmm的應用程序時:

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"' 
----------Building project:[ CalendarsGUI - Debug ]---------- 
........ 

/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 
In file included from //usr/include/glib-2.0/glib/gtypes.h:36:0, 
       from //usr/include/glib-2.0/glib/galloca.h:34, 
       from //usr/include/glib-2.0/glib.h:32, 
       from /usr/include/glibmm-2.4/glibmm/thread.h:46, 
       from /usr/include/glibmm-2.4/glibmm.h:87, 
       from /usr/include/gtkmm-3.0/gtkmm.h:87, 
       from main.cpp:16: 
***//usr/include/glib-2.0/glib/gversionmacros.h:179:2: error: #error "GLIB_VERSION_MIN_REQUIRED must be >= GLIB_VERSION_2_26"*** 
In file included from //usr/include/glib-2.0/glib/galloca.h:34:0, 
       from //usr/include/glib-2.0/glib.h:32, 
       from /usr/include/glibmm-2.4/glibmm/thread.h:46, 
       from /usr/include/glibmm-2.4/glibmm.h:87, 
       from /usr/include/gtkmm-3.0/gtkmm.h:87, 
       from main.cpp:16: 
***//usr/include/glib-2.0/glib/gtypes.h:448:2: error: #error unknown ENDIAN type 
....... 
make: *** [All] Error 2 
2 errors, 2 warnings*** 

顯然,我在這裏失去了一些東西(我也想何時使用gtkmm的2.4有同樣的問題)。我究竟做錯了什麼?我還需要做些什麼來構建gtkmm項目?

+0

此錯誤信息似乎很清楚對我來說:#error「GLIB_VERSION_MIN_REQUIRED必須> = GLIB_VERSION_2_26」,而且你似乎只安裝了2.0版本的glib。 –

+0

看起來你是對的 - 但我根據GTKMM網站上的說明安裝了3.0,並且似乎有唯一版本的glib.h。 GTKMM文檔確實說,安裝的版本並不總是與他們發佈的實際代碼庫同步。 – Vector

+0

@JoachimPileborg - 似乎我並不孤單。在SE/AskUbuntu上有很多類似的問題。他們說Unity似乎跟gtkmm沒有太大關係....順便說一句,感謝編輯。 – Vector

回答

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

葉蘭

+0

我看到在codelite中創建新項目對話框提供了一個選項來創建一個gtkmm項目並自動添加這些標誌。 – Vector

3

不要撥弄包括,使用pkg配置代替:

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

順便說一句,你的榜樣編譯和運行就好了。

相關問題