手动建立GTK开发环境[WIN32]

越来越不喜欢MFC了,不知道是微软这东西太麻烦还是我学的不好,就是感觉这东西超级麻烦,类一个个巨大无比又隐藏再隐藏.自带"文档/视图"模式用起来无比麻烦,于是狠狠心,决定抛弃它了,但是还得找个替代的啊.网上找了半天,锁定了另外3个UI库,GTK,QT,wxWidget.

这3个UI库都是业界鼎鼎有名的,我就不介绍了,不过根据我来看,首先去掉wxWidget,这东西简直就是mfc的翻版,QT嘛,ms是商业的东西,而GTK是全免费,而且是纯C的东西,更容易封装,于是我选择了GTK.

GTK是一个开源的,跨平台的UI库,它的名气我自然不用说了,而且GTK采用LGPL协议,随你怎么用..linux下好说,而windows下想跑起来可不是容易事.

GTK的开发环境的配置和其他开源库比起来,有些不一样,比如QT,wxWidget,下载到的源码包自己编译就可使用了,GTK也可以如此,但是GTK的依赖包太多,编译起来实在麻烦,当然也可以下载有人制作的打包程序,但是往往这些程序包含的GTK都太老,因此最好的办法就是在官方下载已编译的包自己组件开发环境,还好GTK官方提供了所有包的win32下载.

下面开始配置GTK.首先进官方WIN32包下载页面:
http://www.gtk.org/download-windows.html
首先下载"GTK+ individual packages"部分,必须下载的部分包括Binaries和Dev,至于Sources,有兴趣可以下载瞧瞧,不属于必需品.
然后下载依赖包:Third Party Dependencies,个人推荐下载所有依赖包,更方便开发,依赖包的下载规则和上面的一样.
下载完成后我们将这些包分为两个部分,runtime和Dev,runtime部分是gtk程序执行必须的链接库,dev部分是开发gtk需要的头文件和lib部分.ok.我下好的文件分类后如下图:
runtime部分:


Dev部分:

下面就简单了,将所有runtime下的包解压到一个目录,比如在我机器上,我将runtime解压到:E:GTKgtk+,然后将dev下的所有包都解压到E:GTKgtk+-dev下.

最后,我们需要将runtime的动态链接库加入系统变量,也就是在系统Path中加入";E:GTKgtk+in"

这样我们的GTK运行环境就安装完毕,当然,如果想编译GTK程序,还要在编译器配置路径,比如在VS2005/VS2008中,设置GTK的头文件和lib地址,
进入"Tools-Options...-Projects and Solutions-VC++ Directories"
然后在Paltform中选择Win32,"Show Directoriesfor"中选择"Include files",加入:
E:GTKgtk+-devinclude
E:GTKgtk+-devincludegtk-2.0
E:GTKgtk+-devincludeglib-2.0
E:GTKgtk+-devincludeatk-1.0
E:GTKgtk+-devinclude reetype2
E:GTKgtk+-devincludelibxml2
E:GTKgtk+-devincludepango-1.0
E:GTKgtk+-devincludecairo
E:GTKgtk+-devlibglib-2.0include
E:GTKgtk+-devlibgtk-2.0include
然后在"Library files"中加入:
E:GTKgtk+-devlib
然后保存.如此简单就搞定了开发环境测试了,最后我们写个小程序测试下,源代码如下:

C++代码
  1. #include <gtk/gtk.h>   
  2.   
  3. int main(int argc, char *argv[])   
  4. {   
  5.     GtkWidget *window;   
  6.     char *title;   
  7.     gtk_init(&argc,&argv);   
  8.     window=gtk_window_new(GTK_WINDOW_TOPLEVEL);   
  9.     title=g_locale_to_utf8("GTK测试程序",12,NULL,NULL,NULL);   
  10.     gtk_window_set_title(GTK_WINDOW(window),title);   
  11.     gtk_window_set_default_size(GTK_WINDOW(window),600,400);   
  12.     g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);   
  13.     gtk_widget_show_all(window);   
  14.     gtk_main();   
  15.     return 0;   
  16. }   

 

在link的lib中加入:
glib-2.0.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gobject-2.0.lib gdk_pixbuf-2.0.lib gthread-2.0.lib gmodule-2.0.lib pango-1.0.lib intl.lib atk-1.0.lib cairo.lib dirent.lib fontconfig.lib iconv.lib jpeg.lib libtiff.lib libxml2.lib pango-1.0.lib

编译执行,OK,程序成功执行,如下图:

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: C  GTK 
评论: 0 | 引用: 0 | 查看次数: 827
发表评论
用户名:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 500 字 | HTML代码允许 关闭 | 评论可修改 关闭