2009-08-22 142 views
8

我在擺弄Eclipse的C/C++版本來構建一個簡單的GTK應用程序。但是,我似乎無法在Eclipse中編譯GTK示例。我可以編譯一個簡單的Hello World樣式測試應用程序,所以我知道工具鏈本身正在工作。但是,當我開始在混合中添加GTK時,編譯器會出現錯誤。有趣的是,我可以在Eclipse環境以外編譯示例。例如,我使用this頁面上的示例,並按照給出的說明讓我構建一個工作二進制文件。在Eclipse中編譯C/GTK

我想第一個問題是,主GTK包括文件,當我試圖在Eclipse編譯的不同引用。我可以編譯的非Eclipse版本(如示例中所示):

#include <gtk/gtk.h> 

但是,在Eclipse中這不起作用。我需要將其更改爲:

#include <gtk-2.0/gtk/gtk.h> 

的包括然後文件可以被找到,但隨後編譯過程開始扔有關的GtkWidget類型的錯誤。例如: -

#include <gtk-2.0/gtk/gtk.h> 

int main(int argc, char *argv[]) 
{ 
    GtkWidget *window; 

    gtk_init (&argc, &argv); 

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
    gtk_widget_show (window); 

    gtk_main(); 

    return 0; 
} 

結果這些錯誤:

make all 
Building file: ../src/main.c 
Invoking: GCC C Compiler 
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/main.d" -MT"src/main.d" -o"src/main.o" "../src/main.c" 
../src/main.c: In function ‘main’: 
../src/main.c:7: error: ‘GtkWidget’ undeclared (first use in this function) 
../src/main.c:7: error: (Each undeclared identifier is reported only once 
../src/main.c:7: error: for each function it appears in.) 
../src/main.c:7: error: ‘window’ undeclared (first use in this function) 
../src/main.c:9: warning: implicit declaration of function ‘gtk_init’ 
../src/main.c:11: warning: implicit declaration of function ‘gtk_window_new’ 
../src/main.c:11: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function) 
../src/main.c:12: warning: implicit declaration of function ‘gtk_widget_show’ 
../src/main.c:14: warning: implicit declaration of function ‘gtk_main’ 
make: *** [src/main.o] Error 1 

不知道如何去了解這一點。任何援助將非常感激。

回答

8

右鍵單擊Eclipse項目並選擇屬性。從配置下拉列表中選擇[ All configurations ]。然後,該工具設置選項卡上選擇GCC C Compiler(默認),並添加以下到結束Command line pattern(專家設置)對話框:

`pkg-config --cflags --libs gtk+-2.0` 

做同樣的事情爲GCC C Linker選項。

如果你不想啓動包括通過gtk-2.0的路徑比還添加包括目錄(/usr/include/gtk-2.0)像食蟻獸建議。

+1

我無法找到配置下拉列表。可以請你幫我? – 2012-04-19 06:02:05

+0

您使用的是哪個版本的Eclipse,以及您創建了哪種類型的項目?原來的問題是從'09開始的,所以事情可能會在Eclipse UI中發生變化或發生一些變化。 – Luke 2014-03-04 23:18:00

3

嘗試添加GTK目錄到構建路徑:

走進項目屬性 - > C/C++編譯 - >設置 - >工具設置 - >目錄下包含路徑添加它。

+0

謝謝。這照顧了Eclipse不重新識別gtk/gtk.h,但是當我編譯時,我得到了很多錯誤。最後兩個有點奇怪:../src/main。c:16:錯誤:原型函數定義中的舊式參數聲明 ../src/main.c:16:錯誤:預期'{'輸入結束 – Luke 2009-08-22 05:04:36

1

長等待救濟考慮Eclipse CDT的即將到來的pkg配置的支持。

的支持正在開發中,將被整合到CDT八月左右左右。

最重要的特點是一個易於使用的用戶界面,允許選擇所需的軟件包。

項目網站: http://code.google.com/p/pkg-config-support-for-eclipse-cdt/

更新: 隨意測試的beta版本:
http://marketplace.eclipse.org/content/pkg-config-support-eclipse-cdt
的寶貴意見!

+0

它似乎被破壞 - 只有庫被添加,但沒有路徑(在Eclipse Oxygen中) – OBu 2018-01-21 23:17:49