在 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_REQUIRED
和 GDK_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。