在 UNIX 上编译 GTK 应用程序 [src]

要编译 GTK 应用程序,需要告诉编译器在哪里查找 GTK 头文件和库。这通过 pkg-config 实用工具来完成。

以下交互式 shell 会话演示了如何使用 pkg-config(系统上的实际输出可能有所不同)

$ pkg-config --cflags gtk4
 -pthread -I/usr/include/gtk-4.0 -I/usr/lib64/gtk-4.0/include -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12
$ pkg-config --libs gtk4
 -pthread -lgtk-4 -lgdk-4 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0

编译程序的最简单的方法是使用 shell 的“反引号”功能。如果你用反引号将一个命令括起来(不是单引号),那么它的输出将在执行前替换为命令行。因此,要编译 GTK 的 HelloWorld,应该键入以下内容

$ cc `pkg-config --cflags gtk4` hello.c -o hello `pkg-config --libs gtk4`

过时 GTK 函数会加注说明,以便在使用它们时编译器会发出警告(例如,使用 gcc 时,你需要使用 -Wdeprecated-declarations 选项)。如果这些警告有问题,可以通过使用命令行选项 -DGDK_DISABLE_DEPRECATION_WARNINGS 来定义预处理器符号 GDK_DISABLE_DEPRECATION_WARNINGS 来关闭它们。

GTK 已弃用注释有版本;通过定义宏 GDK_VERSION_MIN_REQUIREDGDK_VERSION_MAX_ALLOWED,你可以指定你想要使用的 GTK 版本的 API 范围。在此范围之前已弃用或之后引入的 API 将触发编译器警告。

如果你想允许它使用在 4.2 中未弃用的符号,则可以这样编译 hello.c

$ cc `pkg-config --cflags gtk4` -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_4_2 hello.c -o hello `pkg-config --libs gtk4`

如果你不想让它使用 4.2 之后引入的任何符号,则可以这样编译 hello.c

$ cc `pkg-config --cflags gtk4` -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_4_2 hello.c -o hello `pkg-config --libs gtk4`

使用预处理器符号 GTK_DISABLE_DEPRECATED 将过时的接口完全隐藏在编译器之外,这是一种旧的已弃用机制,仍用于已弃用的宏、枚举值等。要检测代码中是否使用了它们,请使用命令行选项 -DGTK_DISABLE_DEPRECATED。对于 GDK、GdkPixbuf 和 GLib,有类似符号 GDK_DISABLE_DEPRECATED、GDK_PIXBUF_DISABLE_DEPRECATED 和 G_DISABLE_DEPRECATED。