2009-08-22 96 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