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

学习使用GTK+ 系列的第 2 篇 (本系列共7篇)
学习使用GTK+
  • 学习使用GTK+ 0.概述

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

  • 学习使用GTK+ 2.GTK+“Hello World”――对GTK+运作机制的通俗介绍

  • 学习使用GTK+ 3.使用GtkBuilder、界面设计器Glade和其他GTK+组件

  • 学习使用GTK+ 4.GTK+常用物件及API(窗口)

  • 学习使用GTK+ 5.GTK+常用物件及API(文本)

  • 学习使用GTK+ 6.GTK+常用物件及API(按钮)

这一部分介绍的是在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>staticvoid 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 ();return0;}

这段程序会建立一个有两个按钮的窗口。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文件。

本文由 最后的叶子 创作,转载或引用前请联系我们。

相关文章:

  1. 学习使用GTK+ 4.GTK+常用物件及API(窗口)

  2. 学习使用GTK+ 2.GTK+“Hello World”――对GTK+运作机制的通俗介绍

  3. 学习使用GTK+ 5.GTK+常用物件及API(文本)

  4. 学习使用GTK+ 0.概述

  5. 学习使用GTK+ 3.使用GtkBuilder、界面设计器Glade和其他GTK+组件


你可能感兴趣的:(1.构建GTK+编译环境,学习使用GTK+)