2009-08-22 4 views
8

Eclipse의 C/C++ 버전을 둘러보고 간단한 GTK 앱을 작성하려고합니다. 그러나 Eclipse 내에서 GTK 샘플을 컴파일 할 수없는 것 같습니다. 간단한 Hello World 스타일 테스트 앱을 컴파일 할 수 있으므로 툴 체인 자체가 작동하는 것입니다. 그러나 GTK를 믹스에 추가하기 시작하면 컴파일러에서 오류가 발생합니다. 재미있는 점은 이클립스 환경 밖에있는 예제를 잘 컴파일 할 수 있다는 것이다. 예를 들어, this 페이지의 예를 사용하고 거기에 제공된 지침에 따라 작동하는 이진 파일을 만들 수 있습니다.Eclipse 내에서 C/GTK 컴파일하기

첫 번째 문제는 Eclipse 내에서 컴파일하려고 할 때 주 GTK 파일 포함 파일이 다르게 참조된다는 것입니다. 컴파일 할 수있는 비 Eclipse 버전 :

#include <gtk/gtk.h> 

그러나 이클립스에서는 작동하지 않습니다.

#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 

이것에 대해 이동하는 방법을 잘하지 않습니다. 어떤 도움이라도 대단히 감사 할 것입니다. 빌드 경로에 GTK 디렉토리를 추가

답변

8

Eclipse 프로젝트를 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. 구성 드롭 다운에서 [ All configurations ]을 선택하십시오. 그런 다음 도구 설정 탭에있는 상자 말 Command line pattern (전문가 설정)에 다음과 같은 GCC C Compiler (기본값)을 선택하고 추가

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

GCC C Linker 옵션에 대해 같은 일을 할.

gtk-2.0을 사용하여 포함 경로를 시작하지 않으려면 제안 된 aardvark처럼 include 디렉토리 (/usr/include/gtk-2.0)를 추가하십시오.

+1

구성 드롭 다운을 찾을 수 없습니다. 도와주세요. ? –

+0

어떤 Eclipse 버전을 사용하고 어떤 유형의 프로젝트를 만들었습니까? 원래의 질문은 '09에서 나온 것이므로 Eclipse UI에서 상황이 조금씩 바뀌거나 움직일 수 있습니다. – Luke

3

시도 :

프로젝트로 이동 속성 -> C/C++ 빌드 -> 설정 -> 도구 설정 -> 디렉토리 및 경로를 포함 아래에 추가합니다.

+0

감사합니다. 그건 gtk/gtk.h recocnizing 이클립스 돌봐하지만 지금은 컴파일 할 때 너무 많은 오류가 발생합니다. 마지막 두 가지는 다소 이상합니다. ../src/main.c : 16 : error : 프로토 타입 함수 정의에있는 구식 매개 변수 선언 ../src/main.c:16 : 오류 : '{'가 입력 끝에서 예상 됨 – Luke

1

이클립스 CDT에 대한 pkg-config 지원을 고려하면 오래 기다리 셨을 것입니다.

지원이 개발 중이며 8 월경에 CDT에 통합 될 예정입니다.

가장 중요한 기능은 사용하기 쉬운 사용자 인터페이스로 필요한 패키지를 선택할 수 있다는 것입니다.

프로젝트 웹 사이트 : http://code.google.com/p/pkg-config-support-for-eclipse-cdt/

업데이트 :
http://marketplace.eclipse.org/content/pkg-config-support-eclipse-cdt
피드백이 감사 : 베타 버전을 테스트 자유롭게!

+0

그것은 깨진 것 같습니다 - libs만이 추가되지만 경로는 없습니다 (Eclipse Oxygen에서) – OBu

관련 문제