BaNg@taobao

Just Do It!

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  20 Posts :: -1 Stories :: 202 Comments :: 0 Trackbacks
为了搞清linux下SWT与GTK+的映射机制,翻出老笔记本装了个Ubuntu,配置GTK+开发环境还是比较简单的。

  1. 安装必须要的东西
    1. 安装JDK,使用命令:sudo apt-get install sun-java6-sdk
    2. 安装eclipse+CDT 5.0,我觉得CDT从5开始渐成气候了,作为一个eclipse开发者,我觉得他比kdevelop好用:),遗憾的是在win下不支持msvc,只能通过mingw或cygwin
    3. 安装gnome和gtk+开发库,使用命令:sudo apt-get install libgtk2.0-dev libgnome2-dev ,安装之后,所有相关的头文件和静态/动态库文件已经准备好了,不得不说apt-get真NB。
  2. 测试一下
    1. 头文件使用命令 pkg-config --cflags gtk+-2.0,正常情况下会出现一下结果:
      -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1
    2. 库文件使用命令 pkg-config --libs gtk+-2.0,正常情况下会出现一下结果:
      -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
  3. 启动Eclipse,新建一个c project,然后右键单击 properties->c/c++ build->Settings,在Tool Setting中将给GCC设置头文件目录以及链接库(还有一种做法是自定义make file,里面调用pkg-config,因为没有显式设置,cdt无法做静态分析,不能利用它的强大功能,比如索引,重构等)。
    1. 设置头文件,点击GCC C Compiler->Directories,然后使用命令 pkg-config --cflags gtk+-2.0 | sed 's/ /\n/g' > include.txt,然后使用命令 sed 's/-I//g' include.txt,依次将出现的每一行add到inclue path里面去。
    2. 设置库,点击GCC C Linker->Libraries,然后如头文件操作一样使用命令pkg-config --libs gtk+-2.0 | sed 's/ /\n/g' > lib.txt,然后使用命令 sed 's/-l//g' lib.txt,依次将出现的每一行添加到libraries里。
  4. 编写一个包含GTK+测试代码的C文件,添加到项目里面,内容如下:
    #include <gtk/gtk.h>
    static void destroy(GtkWidget*, gpointer);
    static gboolean delete_event(GtkWidget*, GdkEvent*, gpointer);
    int main(int argc, char *argv[]) {
        GtkWidget 
    *window, *label;
        gtk_init(
    &argc, &argv);
        window 
    = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW (window), 
    "Hello World!");
        gtk_container_set_border_width(GTK_CONTAINER (window), 
    10);
        gtk_widget_set_size_request(window, 
    200100);
        
    /* Connect the main window to the destroy and delete-event signals. */
        g_signal_connect(G_OBJECT(window), 
    "destroy", G_CALLBACK(destroy), NULL);
        g_signal_connect(G_OBJECT(window), 
    "delete_event",
                G_CALLBACK(delete_event), NULL);
        
    /* Create a new GtkLabel widget that is selectable. */
        label 
    = gtk_label_new("Hello World");
        gtk_label_set_selectable(GTK_LABEL (label), TRUE);
        
    /* Add the label as a child widget of the window. */
        gtk_container_add(GTK_CONTAINER (window), label);
        gtk_widget_show_all(window);
        gtk_main();
        
    return 0;
    }
    /* Stop the GTK+ main loop function when the window is destroyed. */
    static void destroy(GtkWidget *window, gpointer data) {
        gtk_main_quit();
    }
    /* Return FALSE to destroy the widget. By returning TRUE, you can cancel
     * a delete-event. This can be used to confirm quitting the application. 
    */
    static gboolean delete_event(GtkWidget *window, GdkEvent *event, gpointer data) {
        
    return FALSE;
    }

    (以上代码来自图书 Foundation of GTK+ development)
    然后运行,正常会显式如下:
Ubuntu真是个好东西,耗的资源少,图形系统稳定,对开发人员及其友好,真的很强大。

posted on 2008-11-17 00:28 Always BaNg. 阅读(6128) 评论(3)  编辑  收藏 所属分类: EclipseC++源代码分析

Feedback

# re: Ubuntu下GTK+开发环境设置 2009-12-02 15:14 wqlxp
感谢博主,解决大问题了。  回复  更多评论
  

# re: Ubuntu下GTK+开发环境设置 2012-06-21 14:04 slitony
谢谢。
  回复  更多评论
  

# re: Ubuntu下GTK+开发环境设置 2013-11-20 20:13 lee!ce
难道 archlinux xfce 就不稳定吗?

我用了好几年了,也没见出什么错  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: