这片文章来自Arith Xu的博客http://www.arithxu.com/
微博:http://weibo.com/icearith
Twitter:https://twitter.com/ArithXu
最近因为实验室的一个项目需要使用GTK做UI,所以研究了很久GTk。这个软件主要面向Linix平台,但是我希望自己可以在随身携带的Macbook Air 上开发,所以花了点时间研究了如何在Mac OS X下配置GTK开发环境。我这里配置的是GTK+3.0,方法同样也适用于GTK+2.0。
实验平台:Mac OS X 10.9.3
GTK版本:GTK+3.0
首先介绍下Homebrew,它是Mac OS X下一个新兴的优秀的包管理工具。经常使用Linux或Unix系统的同学应该会比较喜欢包管理工具。如果你是一个Mac发烧友,那么Homebrew你值得拥有。这里留下Homebrew官网,有兴趣可以去详细了解。
1、首先准备安装的条件(Command Line Tools和X11 Server)
安装Command Line Tools :如果你已经安装了,或者已经安装过Xcode这里可以选择忽略。
xcode-select --install
安装XQuartz:GTK需要X11 Server,如果你的Mac安装的是Mac OS X Mountain Lion 或者更高的版本,那么就需要手动安装XQuartz。你可以选择官网下载安装(http://xquartz.macosforge.org/landing/),或者从Launchpad中点击X11安装。
2、安装Homebrew
Homebrew官网(http://brew.sh),使用Rubby脚本安装,因为OS X已经自带了Ruby,所以如果你没有删除或者升级过OS X自带的Ruby,就可以直接用下面的命令安装了。如果你升级或者删除过Ruby,请按照Homebrew官网的要求安装对应版本的Ruby。
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
3、安装pkg-config
pkg-config 是姨哥提供从源代码中编译软件时查询已安装的库时使用的统一接口工具。最早设计用于Linux,但现在在各个版本的BSD、Windows、Mac OS X 和 Solaris 上都有着可用的版本。(引用自维基百科)
因为已经安装好了 Homebrew ,所以这里直接使用Homebrew安装,有木有很方便。
brew install pkg-config
4、安装GTK+3.0
同样的方法,直接使用Homebrew安装。
brew install gtk+3
5、配置pkg-config
vim ~/.bash_profile
在文件的适当位置加入:
export PKG_CONFIG_PATH="/usr/X11/lib/pkgconfig:/usr/local/Cellar/cairo/1.12.16/lib/pkgconfig/"
保存退出后:
source ~/.bash_profile
6、测试代码
#include
#include
#include
static gboolean delete_event(GtkWidget * widget, GdkEvent * event,
gpointer data) {
gtk_main_quit();
return FALSE;
}
int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window), "RobberPhex");
gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
g_signal_connect(window, "delete-event", G_CALLBACK(delete_event), NULL);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
label = gtk_label_new("Hello GTK!");
gtk_container_add(GTK_CONTAINER(window), label);
gtk_widget_show(label);
gtk_widget_show(window);
gtk_main();
return 0;
}
7、编译代码
我在使用gcc gtkhello.c -o gtktest pkg-config --cflags --libs gtk+-3.0
编译的时候出现了错误,现在还没找到错误的原因。不过多次常时候我使用这个命令的形式编译通过并成功运行。
gcc $(pkg-config gtk+-3.0 --cflags) $(pkg-config gtk+-3.0 --libs) gtk_test.c -o gtktest
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.