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工作还是交给工具自动来完成的好,我可以节约点时间来和人聊聊天。

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