为了在Eclipse下编译使用GTK的C程序,折腾了好久。查了许多资料,发现网上的绝大部分方法都不行。不知道我是太“走运”了还是怎么回事。折腾了几个小时后,终于分别在Windows下和Ubuntu下都搭建成功了gtk环境。这里就把我的经历写下来。也方便其他人参考。
Ubuntu下在Eclipse中运行C语言的GTK程序
1、下载相关的包
sudo apt-get install gnome-core-devel build-essential libgtk2.0-dev libgtk2.0-doc
2、测试代码
打开Eclipse,新建——C Project——输入Project name,并选择Executable中的Hello World ANSI C Project,默认会选择Linux GCC的Toolchains,点击Finish——这时会打开一个Hello World的示例代码——将其中哦功能的代码换成接下来的测试代码。(其实完全可以不用Hello World模版,这里只是简化过程。)
#include <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;
}
3、配置Eclipse
(1)选中gtk项目,在菜单栏点击Project——Properties——C/C++ Build——Settings——GCC C Compiler——Miscellaneous,在Other flags中加入`pkg-config –cflags gtk+-2.0`
(2)在同一个对话框中,选择GCC C Linker——Miscellaneous,在Linker flags中加入`pkg-config –libs gtk+-2.0`
(3)选中GCC C Linker,在右边的Command line pattern里面的${INPUTS} 调到${COMMAND}后面,如: ${COMMAND} ${INPUTS} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT}
(4)在GCC C Compiler——Includes中,加入/usr/include/gtk-2.0 和 /usr/include/glib-2.0,可以消除gtk.h unresolved的警告,同时在程序中使用gtk的函数,会出现智能提示。
经过以上步骤,一个GTK程序就能运行出来了。
Windows下在Eclipse中运行C语言的GTK程序
1、安装并配置gtk
(1)下载windows下用的gtk包,地址为http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.24/gtk+-bundle_2.24.8-20111122_win32.zip,点击直接下载,不放心的话可以将地址拷到浏览器地址栏下载。
(2)将下载后的gtk+-bundle_2.24.8-20111122_win32.zip解压,并将解压这个文件包之后的文件夹更名为gtk,比如放到C盘中:C:gtk。
(3)添加环境变量:我的电脑/计算机——右击,属性——在弹出的界面中选右边的高级选项——选择环境变量——在对话框的接下来选择PATH项——双击,添加C:gtkbin,注意以分号分割不同的变量。
(4)点开始,输入cmd,打开命令行,输入pkg-config --cflags gtk+-2.0+,回车,会出现一堆目录名,如下:
-mms-bitfields -Ic:/gtk/include/gtk-2.0 -Ic:/gtk/lib/gtk-2.0/include -Ic:/gtk/include/atk-1.0 -Ic:/gtk/include/cairo -Ic:/gtk/include/gdk-pixbuf-2.0 -Ic:/gtk/include/pango-1.0 -Ic:/gtk/include/glib-2.0 -Ic:/gtk/lib/glib-2.0/include -Ic:/gtk/include -Ic:/gtk/include/freetype2 -Ic:/gtk/include/libpng14
(5)继续在cmd窗口中输入pkg-config --libs gtk+-2.0,回车,出现另一堆目录:
-Lc:/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
2、C语言的gtk模版程序
打开Eclipse,新建C项目的Hello World,并换成gtk的模版,如上一节的第二小节一样。
3、在Eclipse中,选中gtk的项目
(1)选中gtk项目,在菜单栏点击Project——Properties——C/C++ Build——Settings——GCC C Compiler——Miscellaneous,在Other flags中加入在命令行中输入`pkg-config –cflags gtk+-2.0`得到的内容。可以用鼠标在cmd窗口复制得到;
(2)在同一个对话框中,选择MinGW C Linker——Miscellaneous,在Linker flags中加入在命令行中输入`pkg-config –libs gtk+-2.0`得到的内容;
(3)选中MinGW C Linker,在右边的Command line pattern里面的${INPUTS} 调到${COMMAND}后面,如:
${COMMAND} ${INPUTS} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT}
(4)在GCC C Compiler——Includes中,加入C:gtkincludegtk-2.0等(具体取决于你将gtk解压到哪,以及解压这个文件包之后的文件名),可以消除gtk.h unresolved的警告,同时在程序中使用gtk的函数,会出现智能提示。
经过以上步骤,一个GTK程序就能运行出来了。至于为什么不能像在Ubuntu中直接使用`pkg-config –libs gtk+-2.0`等作为Miscellaneous的参数,我也没找到合理的解释,一旦谁能解答,请告诉大家,谢谢。