BaNg@taobao

          Just Do It!

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            20 Posts :: -1 Stories :: 202 Comments :: 0 Trackbacks
          為了搞清linux下SWT與GTK+的映射機(jī)制,翻出老筆記本裝了個(gè)Ubuntu,配置GTK+開發(fā)環(huán)境還是比較簡(jiǎn)單的。

          1. 安裝必須要的東西
            1. 安裝JDK,使用命令:sudo apt-get install sun-java6-sdk
            2. 安裝eclipse+CDT 5.0,我覺(jué)得CDT從5開始漸成氣候了,作為一個(gè)eclipse開發(fā)者,我覺(jué)得他比kdevelop好用:),遺憾的是在win下不支持msvc,只能通過(guò)mingw或cygwin
            3. 安裝gnome和gtk+開發(fā)庫(kù),使用命令:sudo apt-get install libgtk2.0-dev libgnome2-dev ,安裝之后,所有相關(guān)的頭文件和靜態(tài)/動(dòng)態(tài)庫(kù)文件已經(jīng)準(zhǔn)備好了,不得不說(shuō)apt-get真NB。
          2. 測(cè)試一下
            1. 頭文件使用命令 pkg-config --cflags gtk+-2.0,正常情況下會(huì)出現(xiàn)一下結(jié)果:
              -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. 庫(kù)文件使用命令 pkg-config --libs gtk+-2.0,正常情況下會(huì)出現(xiàn)一下結(jié)果:
              -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. 啟動(dòng)Eclipse,新建一個(gè)c project,然后右鍵單擊 properties->c/c++ build->Settings,在Tool Setting中將給GCC設(shè)置頭文件目錄以及鏈接庫(kù)(還有一種做法是自定義make file,里面調(diào)用pkg-config,因?yàn)闆](méi)有顯式設(shè)置,cdt無(wú)法做靜態(tài)分析,不能利用它的強(qiáng)大功能,比如索引,重構(gòu)等)。
            1. 設(shè)置頭文件,點(diǎn)擊GCC C Compiler->Directories,然后使用命令 pkg-config --cflags gtk+-2.0 | sed 's/ /\n/g' > include.txt,然后使用命令 sed 's/-I//g' include.txt,依次將出現(xiàn)的每一行add到inclue path里面去。
            2. 設(shè)置庫(kù),點(diǎn)擊GCC C Linker->Libraries,然后如頭文件操作一樣使用命令pkg-config --libs gtk+-2.0 | sed 's/ /\n/g' > lib.txt,然后使用命令 sed 's/-l//g' lib.txt,依次將出現(xiàn)的每一行添加到libraries里。
          4. 編寫一個(gè)包含GTK+測(cè)試代碼的C文件,添加到項(xiàng)目里面,內(nèi)容如下:
            #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;
            }

            (以上代碼來(lái)自圖書 Foundation of GTK+ development)
            然后運(yùn)行,正常會(huì)顯式如下:
          Ubuntu真是個(gè)好東西,耗的資源少,圖形系統(tǒng)穩(wěn)定,對(duì)開發(fā)人員及其友好,真的很強(qiáng)大。

          posted on 2008-11-17 00:28 Always BaNg. 閱讀(6158) 評(píng)論(3)  編輯  收藏 所屬分類: EclipseC++源代碼分析

          Feedback

          # re: Ubuntu下GTK+開發(fā)環(huán)境設(shè)置 2009-12-02 15:14 wqlxp
          感謝博主,解決大問(wèn)題了。  回復(fù)  更多評(píng)論
            

          # re: Ubuntu下GTK+開發(fā)環(huán)境設(shè)置 2012-06-21 14:04 slitony
          謝謝。
            回復(fù)  更多評(píng)論
            

          # re: Ubuntu下GTK+開發(fā)環(huán)境設(shè)置 2013-11-20 20:13 lee!ce
          難道 archlinux xfce 就不穩(wěn)定嗎?

          我用了好幾年了,也沒(méi)見出什么錯(cuò)  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 冀州市| 进贤县| 阜阳市| 拜泉县| 河曲县| 河东区| 洛南县| 黄冈市| 大竹县| 保亭| 大余县| 喜德县| 二手房| 长岭县| 绍兴县| 拜泉县| 响水县| 宁陵县| 平顶山市| 关岭| 甘泉县| 荣成市| 周宁县| 香港| 酒泉市| 碌曲县| 大方县| 定远县| 东城区| 都匀市| 东阳市| 墨竹工卡县| 阳曲县| 惠来县| 清河县| 湖北省| 青神县| 涞水县| 肥西县| 湖南省| 册亨县|