FindGTK2

注意

此模块专门针对 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)

查找 GTK 小部件库及其多个其他可选组件

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

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::<component>

封装指定的 GTK 组件使用要求的目标,如果找到 GTK 和该组件则可用。<component> 应与上面列出的顺序和大小写相同。例如,使用 GTK2::gtk 来表示 gtk 组件,或者使用 GTK2::gdk_pixbuf 来表示 gdk_pixbuf 组件,依此类推。

GTK2::sigc++

3.5 版本新增。

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

结果变量

此模块定义了以下变量

GTK2_FOUND

布尔值,指示是否找到(请求版本的)GTK 2 和所有指定的组件。

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 版本新增。

当此变量设置为布尔值 true 时,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)