学习使用GTK+ 1.构建GTK+编译环境

400 篇文章 3 订阅
147 篇文章 0 订阅

学习使用GTK+ 1.构建GTK+编译环境

学习使用GTK+ 系列的第 2 篇 (本系列共6篇)

这一部分介绍的是在Windows/Linux下配置GTK+(C语言)编译及运行环境的方法。如果内容存在错误,或者方法不适用与你的电脑,请在下方评论区留言给我,谢谢!

在Linux下配置GTK+编译环境

Linux的X Window是GTK+主要应用的地方,在Linux下配置GTK+应该是比较容易成功的。当然,你的Linux需要有GNOME或Xfce这样的桌面环境(不建议在KDE下运行GTK+应用程序)。

如果你的Linux像Ubuntu这样有一个软件库,那就太方便了,直接安装包libgtk2.0-dev即可。如果不能直接安装软件包,你还可以直接到http://www.gtk.org/download-linux.html 下载,那个安装指南 会对你有帮助的。

然后是编辑器的问题。像Anjuta这样的编辑器可以直接创建GTK+项目,你可以利用这个功能,很方便。如果你的编辑器不能创建GTK+项目,或者你根本不打算用编辑器,你可以用pkgconfig命令获得你用gcc编译时所需的参数:

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

这一系列以后的文章中会用到Glade界面设计器,请安装包glade或到http://ftp.gnome.org/pub/GNOME/sources/glade3/3.6/ 下载Source来编译。要注意的是,Glade本身也是一个GTK+应用程序,需要在GTK+的桌面环境中运行。

在Windows下配置GTK+编译环境

在Windows下配置编译环境就有些麻烦。这里看来要用支持创建GTK+项目的编辑器来帮忙了。

这里介绍在Code::Blocks编辑器和MinGW GCC编译器下编译GTK+程序的方法。(其实在Visual Studio下也可以编译GTK+的,但是这里不推荐。)

装好Code::Blocks

如果你不熟悉Code::Blocks,建议看看我以前写的这篇文章

安装GTK+开发库和Glade界面编辑器

这里介绍一个简单的方法。Glade有的发布版直接包含有GTK+开发库。到Glade主页http://glade.gnome.org/ 右边的Windows Binaries中找Glade3-x.x.x-with-gtk.exe这样的版本下载安装。建议装到C:/gtk/。

但是可能Glade自带的GTK+开发库不是最新的,无法实现一下高版本的GTK+提供的功能,因此最好到GTK+下载页http://www.gtk.org/download-windows.html 下载一个All-in-one bundles。下载下来之后直接解压到刚刚Glade的安装目录即可。

在Code::Blocks中建立GTK+项目

Code::Blocks中,File->New->Project中应该会有GTK+ Project这一选项。按着向导新建即可,但要注意几个地方:项目文件完整路径必须是英文的,Code::Blocks对中文路径和文件名支持不 佳;GTK’s location必须指定为你刚刚安装的GTK+开发库所在文件夹。

测试你的编译环境

就拿Code::Blocks为我们自动生成的这段程序做测试吧:

#include <stdlib.h>

#include <gtk/gtk.h>
 
static void helloWorld ( GtkWidget * wid, GtkWidget * win)
{
GtkWidget * dialog = NULL;
 
dialog = gtk_message_dialog_new ( GTK_WINDOW ( win) , GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!" ) ;
gtk_window_set_position ( GTK_WINDOW ( dialog) , GTK_WIN_POS_CENTER) ;
gtk_dialog_run ( GTK_DIALOG ( dialog) ) ;
gtk_widget_destroy ( dialog) ;
}
 
int main ( int argc, char * argv[ ] )
{
GtkWidget * button = NULL;
GtkWidget * win = NULL;
GtkWidget * vbox = NULL;
 
/* Initialize GTK+ */
g_log_set_handler ( "Gtk" , G_LOG_LEVEL_WARNING, ( GLogFunc) gtk_false, NULL) ;
gtk_init ( & argc, & argv) ;
g_log_set_handler ( "Gtk" , G_LOG_LEVEL_WARNING, g_log_default_handler, NULL) ;
 
/* Create the main window */
win = gtk_window_new ( GTK_WINDOW_TOPLEVEL) ;
gtk_container_set_border_width ( GTK_CONTAINER ( win) , 8 ) ;
gtk_window_set_title ( GTK_WINDOW ( win) , "Hello World" ) ;
gtk_window_set_position ( GTK_WINDOW ( win) , GTK_WIN_POS_CENTER) ;
gtk_widget_realize ( win) ;
g_signal_connect ( win, "destroy" , gtk_main_quit, NULL) ;
 
/* Create a vertical box with buttons */
vbox = gtk_vbox_new ( TRUE, 6 ) ;
gtk_container_add ( GTK_CONTAINER ( win) , vbox) ;
 
button = gtk_button_new_from_stock ( GTK_STOCK_DIALOG_INFO) ;
g_signal_connect ( G_OBJECT ( button) , "clicked" , G_CALLBACK ( helloWorld) , ( gpointer) win) ;
gtk_box_pack_start ( GTK_BOX ( vbox) , button, TRUE, TRUE, 0 ) ;
 
button = gtk_button_new_from_stock ( GTK_STOCK_CLOSE) ;
g_signal_connect ( button, "clicked" , gtk_main_quit, NULL) ;
gtk_box_pack_start ( GTK_BOX ( vbox) , button, TRUE, TRUE, 0 ) ;
 
/* Enter the main loop */
gtk_widget_show_all ( win) ;
gtk_main ( ) ;
return 0 ;
}

这段程序会建立一个有两个按钮的窗口。Windows下还会另外有个小黑窗口,方便调试用的;指定Build->Select target->Release之后再编译,编译出来的“Release”版本就没有小黑窗口了。

如果你编译失败——不幸,但是你可以在下面留言给我。

在Windows下制作一个GTK+运行环境

你需要明白的是,GTK+是需要运行库的——Linux下一般都会自带有,Windows下就没那么幸运了。如果你的程序需要在别人的电脑上运行,你往往需要附带一个GTK+运行库,运行库的制作方法是把http://www.gtk.org/download-windows.html 中的所有Binary组合起来。

为了方便大家,我自己做了一个运行库,经过一定精简(只有中英两种语言),大小13MB(压缩后3MB)。大家可以到这里下载

用法就是把程序及程序用到的文件放进来,使程序与运行库的那堆dll在同一级文件夹下。然后整个文件夹就可以作为便携软件在不含GTK+的Windows中使用了。

另外,GTK+运行库是支持主题的。你可以为GTK+指定主题,给那些按钮换一个样子。GTK+主题文件位于运行库的/etc/gtk-2.0文件 夹中,名为gtkrc。我制作的运行库指定了GTK+使用Windows主题。你可以在网上搜出很多GTK+ themes,使用方法就是替换gtkrc文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值