linux下gtk開發環境搭建

環境搭建

安裝必要的工具

apt install libgtk-3-dev pkg-config

可以安裝額外的example包,裏面提供的一些demo程序是非常好的參考

apt install gtk-3-examples

gtk-3-examples包中的hello-world.c程序

#include <gtk/gtk.h>

static void
print_hello (GtkWidget *widget,
             gpointer   data)
{
  g_print ("Hello World\n");
}

static void
activate (GtkApplication *app,
          gpointer        user_data)
{
  GtkWidget *window;
  GtkWidget *button;
  GtkWidget *button_box;

  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Window");
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);

  button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
  gtk_container_add (GTK_CONTAINER (window), button_box);

  button = gtk_button_new_with_label ("Hello World");
  g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
  g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
  gtk_container_add (GTK_CONTAINER (button_box), button);

  gtk_widget_show_all (window);
}

int
main (int    argc,
      char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}`

命令行編譯:

gcc hello-world.c -o hello `pkg-config --cflags --libs gtk+-3.0` -o hello

glade畫圖

使用glade進行畫圖,它提供了一種IDE工具來幫助繪圖,對新手來說非常友好,最終和android app的佈局一樣都使用xml保存,可以前期使用glade來進行UI佈局調整,之後可以直接編輯xml文件來進行程序邏輯調整。
程序中需要加載解釋相應的xml佈局文件,從xml文件中構建運行時對象,通過元件的id來過去對象,之後進行各種操作

apt install glade

有興趣可以參考這兩個文件,不同發行版上路徑可能不同:

/usr/share/doc/gtk-3-examples/examples/builder.c
/usr/share/doc/gtk-3-examples/examples/builder.ui

幫助文檔

apt install devhelp

它裏面提供了大量的api說明文檔,必備手冊

如何編譯gtk靜態版本的程序,這樣可以在任意系統中都可以運行?
gtk本身只提供了動態鏈接庫版本,沒有提供靜態鏈接版本的程序,它本身依賴X11,wayland,libfont等系統庫,總共有70多個庫,我們想要靜態鏈接的gtk程序隨處運行,但是gtk庫本身依賴很多系統特定的庫。假如靜態鏈接的是wayland1.0,但是機器上運行的是wayland0.1,這樣就非常容易出現兼容性問題,所以這個靜態鏈接的必要性需要商榷一下。

結語

最近兩年一直使用vim,裏面配置了ctags,cscope,taglist等,經常看到各種編輯器的各種嘲諷鏈,個人感覺到哪座山唱那首歌是非常必須的,例如我寫個python絕對使用pycharm,寫android和java用eclipse,絕不會傻叉到非得用vim寫android應用,光導入包都要耗費我好些腦細胞,不如baidu一下花一上午時間整個eclipse+ADT,import工作還是交給工具自動來完成的好,我可以節約點時間來和人聊聊天。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章