1. 使用 Vala,其实调用的是 gtk4.vapi –> libgrk4.so。(VAPI 文件包含了一个库的接口描述信息)

  2. Gtk-4.0.typelib影响的是 gtk4.vapi 的生成。(gtk4.vapi提前就会生成好,不会在编译程序的时候再生成)

1 Vala

Vala 是一种编程语言,专为 GNOME 项目设计,旨在提供一种高效且便于开发者使用的编程体验。Vala 的语法类似于 C#,但它会编译为 C 代码,因此可以利用现有的 C 语言库。 alt text

  1. 专门为GNOME项目开发设计的高级语言,本身与 GObject 集成。

  2. vapigen 工具用于从 GIR(GObject Introspection Repository)文件生成 VAPI 文件。vapigen 通常由发行版随 valac (这是vala语言的编译器)一起提供,或者作为一个单独的 Vala 工具/开发包提供。

  3. 可以在 /usr/share/vala-0.56/vapi/ 目录,查看已经安装的 .vapi 文件。

    alt text

1.1 vapi文件

libhandy:

meson_options 中会有 vapi 编译选项 ,是否生成 .vapi 文件。

alt text

alt text

libadwaita:

alt text

alt text

2 使用Vala编译Gtk4窗口

/* compile conmmad: valac --pkg gtk4 window.vala */

using Gtk;

int main (string[] argv) {
  // Create a new application
  var app = new Gtk.Application ("com.example.GtkApplication", GLib.ApplicationFlags.DEFAULT_FLAGS);
  app.activate.connect (() => {
      var window = new Gtk.ApplicationWindow (app);
      var button = new Gtk.Button.with_label ("Hello, World!");

      button.clicked.connect (() => {
          window.close ();
      });

      window.set_child (button);
      window.present ();
  });
  return app.run (argv);
}