2009-08-22 22 views
8

Używam wersji Eclipse C/C++ do zbudowania prostej aplikacji GTK. Jednak nie mogę wydawać się w stanie skompilować próbki GTK z poziomu Eclipse. Mogę skompilować prostą aplikację testową w stylu Hello World, więc wiem, że działa łańcuch narzędzi. Jednak w chwili, gdy zaczynam dodawać GTK do miksu, kompilator przychodzi z błędami. Zabawne jest to, że mogę skompilować przykłady poza środowiskiem Eclipse. Np. Używam przykładów na stronie this i postępując zgodnie z instrukcjami tam podanymi, pozwól mi zbudować działający plik binarny.Kompilowanie C/GTK w Eclipse

Myślę, że pierwszym problemem jest to, że główny plik dołączony do GTK ma inne odniesienia, gdy próbuję skompilować w Eclipse. Wersja non-Eclipse mogę skompilować (jak w przykładzie):

#include <gtk/gtk.h> 

Jednak w Eclipse to nie działa. Muszę go zmienić na:

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

include plik można następnie znaleźć ale proces kompilacji następnie zaczyna rzucać błędy o rodzaju GtkWidget. Np .:

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

Wyniki w tych błędów:

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 

Nie wiesz, jak go o to. Każda pomoc będzie bardzo doceniana.

Odpowiedz

8

Kliknij prawym przyciskiem myszy projekt Eclipse i wybierz właściwości. Z listy rozwijanej Konfiguracja wybierz [ All configurations ]. Następnie na karcie Ustawienia narzędzi wybierz GCC C Compiler (domyślnie) i dodać następujące końcowych Command line pattern (ustawienia eksperta) pudełka:

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

Czy to samo dla opcji GCC C Linker.

Jeśli nie chcesz uruchamiać ścieżek dołączania za pomocą gtk-2.0, dodaj także katalog dołączania (/usr/include/gtk-2.0), tak jak zasugerował aardvark.

+1

Nie mogę znaleźć konfiguracji drop.can możesz mi pomóc ? –

+0

Jakiej wersji Eclipse używasz i jaki typ projektu stworzyłeś? Pierwotne pytanie pochodzi z wersji 09, więc w interfejsie Eclipse mogło się nieco zmienić lub przenieść. – Luke

3

spróbuj dodać katalog do ścieżki gtk build:

Idź do projektu Właściwości -> C/C++ Build -> Ustawienia -> Ustawienia -> narzędzia Katalogi i dodać go pod Dołącz ścieżek.

+0

Dzięki. To sprawiło, że Eclipse nie rozpoznał tagu gtk/gtk.h, ale kiedy skompiluję teraz, dostaję tyle błędów. Ostatnie dwa są trochę dziwne: ../src/main.c: 16: error: deklaracje parametrów w starym stylu w prototypowanej definicji funkcji ../src/main.c:16: błąd: oczekiwano '{' na końcu wejścia – Luke

1

Długo oczekiwana ulga ze względu na obsługę pkg-config dla Eclipse CDT już wkrótce.

Wsparcie jest w trakcie opracowywania i zostanie zintegrowane z CDT około sierpnia.

Najważniejszą cechą jest to, że łatwy w obsłudze interfejs użytkownika pozwala wybrać wymagane pakiety. strona

Projekt: http://code.google.com/p/pkg-config-support-for-eclipse-cdt/

Aktualizacja: Zapraszam do testowania wersji beta:
http://marketplace.eclipse.org/content/pkg-config-support-eclipse-cdt
opinia jest mile widziana!

+0

wygląda na to, że jest uszkodzony - dodawane są tylko biblioteki, ale nie ścieżki (w Eclipse Oxygen) – OBu