2009-08-22 34 views
8

Tôi đang sử dụng phiên bản Eclipse C/C++ để xây dựng một ứng dụng GTK đơn giản. Tuy nhiên, tôi dường như không thể biên dịch một mẫu GTK từ bên trong Eclipse. Tôi có thể biên dịch một ứng dụng thử nghiệm kiểu Hello World đơn giản, vì vậy tôi biết chính chuỗi công cụ đang hoạt động. Tuy nhiên, thời điểm tôi bắt đầu thêm GTK vào hỗn hợp trình biên dịch đi kèm với lỗi. Điều thú vị là tôi có thể biên dịch các ví dụ bên ngoài môi trường Eclipse tốt. Ví dụ: tôi đang sử dụng các ví dụ trên trang this và làm theo hướng dẫn được cung cấp ở đó để tôi tạo một tệp nhị phân hoạt động.Biên dịch C/GTK trong Eclipse

Tôi nghĩ rằng vấn đề đầu tiên là GTK chính bao gồm tệp được tham chiếu khác nhau khi tôi cố gắng biên dịch trong Eclipse. Phiên bản không phải Eclipse mà tôi có thể biên dịch với (như trong ví dụ):

#include <gtk/gtk.h> 

Tuy nhiên, trong Eclipse điều này không có tác dụng. Tôi cần phải thay đổi nó thành:

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

Sau đó, tệp có thể được tìm thấy nhưng quá trình biên dịch bắt đầu ném lỗi về loại GtkWidget. Ví dụ .:

#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; 
} 

Kết quả trong các lỗi:

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 

Không chắc thế nào để đi về việc này. Bất kỳ hỗ trợ nào sẽ được đánh giá rất nhiều.

Trả lời

8

Nhấp chuột phải vào dự án Eclipse và chọn thuộc tính. Từ menu thả xuống Cấu hình, chọn [ All configurations ]. Sau đó vào tab Công cụ Cài đặt chọn GCC C Compiler (mặc định) và thêm dòng sau vào cuối Command line pattern (cài đặt Expert) hộp:

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

làm điều tương tự cho các tùy chọn GCC C Linker.

Nếu bạn không muốn bắt đầu đường dẫn bao gồm của mình bằng gtk-2.0 ngoài việc thêm thư mục bao gồm (/usr/include/gtk-2.0) như aardvark được đề xuất.

+1

tôi không thể tìm thấy cấu hình thả xuống. bạn có thể giúp tôi ? –

+0

Bạn đang sử dụng phiên bản Eclipse nào và bạn đã tạo loại dự án nào? Câu hỏi ban đầu là từ '09, vì vậy mọi thứ có thể đã thay đổi hoặc di chuyển xung quanh một chút trong giao diện người dùng Eclipse. – Luke

3

Hãy thử thêm các thư mục gtk để build path:

Đi vào dự án Properties -> C/C++ xây dựng -> Cài đặt -> Cài đặt Tool -> Thư mục và thêm nó dưới Bao gồm đường dẫn.

+0

Cảm ơn. Điều đó đã làm cho Eclipse không recocnizing gtk/gtk.h nhưng khi tôi biên dịch bây giờ tôi nhận được rất nhiều lỗi. Hai cái cuối cùng là lạ: ../src/main.c: 16: error: khai báo tham số kiểu cũ trong định nghĩa hàm nguyên mẫu ../src/main.c:16: lỗi: dự kiến ​​'{' ở cuối đầu vào – Luke

1

Việc cứu trợ dài chờ xem xét hỗ trợ pkg-config cho CDT Eclipse sắp ra mắt.

Hỗ trợ đang được phát triển và sẽ được tích hợp vào CDT vào khoảng tháng 8 hoặc lâu hơn.

Tính năng quan trọng nhất là giao diện người dùng dễ sử dụng cho phép chọn các gói được yêu cầu. website

dự án: http://code.google.com/p/pkg-config-support-for-eclipse-cdt/

Cập nhật: Hãy thoải mái để thử nghiệm phiên bản beta:
http://marketplace.eclipse.org/content/pkg-config-support-eclipse-cdt
Phản hồi được đánh giá cao!

+0

dường như bị hỏng - chỉ các lib được thêm vào chứ không phải các đường dẫn (trong Oxy của Eclipse) – OBu

Các vấn đề liên quan