FindGTK2

查找 GTK 窗口小部件库及其一些其他可选组件。

GTK 是一个用于创建图形用户界面的多平台工具包。

注意

此模块专门用于 GTK 2.x 版本,该版本已过时且不再维护。请使用最新支持的 GTK 版本和 FindPkgConfig 模块在 CMake 中查找 GTK,而不是使用此模块。例如

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk4>=4.14)
target_link_libraries(example PRIVATE PkgConfig::GTK)

组件

此模块支持可选组件,可以使用 find_package() 命令指定

find_package(GTK2 [COMPONENTS <components>...])

支持的组件包括

  • atk

  • atkmm

  • cairo

  • cairomm

  • gdk_pixbuf

  • gdk

  • gdkmm

  • gio

  • giomm

  • glade

  • glademm

  • glib

  • glibmm

  • gmodule

  • gobject

  • gthread

  • gtk

  • gtkmm

  • pango

  • pangocairo

  • pangoft2

  • pangomm

  • pangoxft

  • sigc

  • 在 3.16.7 版本中新增: harfbuzz

如果未指定组件,模块默认搜索 gtk 组件。

导入的目标

此模块提供以下导入目标(取决于组件选择)

GTK2::<组件>

封装指定 GTK 组件使用要求的​​目标,如果找到 GTK 和此组件,则可用。 <组件> 应以与上面列出的相同的大小写书写。例如,gtk 组件使用 GTK2::gtkgdk_pixbuf 组件使用 GTK2::gdk_pixbuf,等等。

GTK2::sigc++

3.5 版本新增。

封装使用 sigc++ 2.5.1 或更高版本时在其依赖项上启用 c++11 的使用要求的​​目标。此目标会根据需要自动应用于依赖目标。

结果变量

此模块定义了以下变量

GTK2_FOUND

布尔值,指示是否找到 GTK 和所有指定组件。

GTK2_VERSION

找到的 GTK 版本 (x.y.z)。

GTK2_MAJOR_VERSION

找到的 GTK 主版本。

GTK2_MINOR_VERSION

找到的 GTK 次版本。

GTK2_PATCH_VERSION

找到的 GTK 补丁版本。

GTK2_INCLUDE_DIRS

包含使用 GTK 所需头文件的包含目录。

GTK2_LIBRARIES

链接到 GTK 所需的库。

GTK2_TARGETS

3.5 版本新增。

所有已定义导入目标的列表。

GTK2_DEFINITIONS

使用 GTK 所需的额外编译器标志。

输入变量

在调用 find_package(GTK2) 之前,此模块接受以下可选变量

GTK2_DEBUG

布尔变量,启用此模块的详细调试输出。

GTK2_ADDITIONAL_SUFFIXES

要搜索包含文件的附加路径后缀列表。

GTK2_USE_IMPORTED_TARGETS

3.5 版本新增。

当此变量设置为布尔真时,GTK2_LIBRARIES 变量将包含导入目标的列表,而不是库路径。

示例

示例:查找 GTK 版本 2

调用 find_package() 一次。以下是一些示例供选择。

要求 GTK 2.6 或更高版本

find_package(GTK2 2.6 REQUIRED COMPONENTS gtk)

要求 GTK 2.10 或更高版本及其 Glade 组件

find_package(GTK2 2.10 REQUIRED COMPONENTS gtk glade)

搜索 GTK/GTKMM 2.8 或更高版本

find_package(GTK2 2.8 COMPONENTS gtk gtkmm)

查找 GTK 2 并将其链接到项目目标

find_package(GTK2)
add_executable(mygui mygui.cc)
target_link_libraries(mygui PRIVATE GTK2::gtk)

示例:查找 GTK 版本 3 或更高版本

使用 FindPkgConfig 而非此模块查找 GTK 3

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED IMPORTED_TARGET gtk+-3.0>=3.14)
target_link_libraries(example PRIVATE PkgConfig::GTK3)

或类似地查找 GTK 4

find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK4 REQUIRED IMPORTED_TARGET gtk4>=4.14)
target_link_libraries(example PRIVATE PkgConfig::GTK4)