# FindGTK2

Finds the GTK widget libraries and several of its other optional components.

GTK is a multi-platform toolkit for creating graphical user interfaces.

Note

This module is specifically for GTK version 2.x, which is obsolete and no longer maintained. Use the latest supported GTK version and `FindPkgConfig` module to find GTK in CMake instead of this module. For example:

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

## Components

This module supports optional components, which can be specified with the `find_package()` command:

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

Supported components include:

`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`

- Added in version 3.16.7: `harfbuzz`

If no components are specified, module by default searches for the `gtk` component.

## Imported Targets

This module provides the following Imported Targets (subject to component selection):

`GTK2::<component>`

  Target encapsulating the specified GTK component usage requirements, available if GTK and this component are found. The `<component>` should be written in the same case, as listed above. For example, use `GTK2::gtk` for the `gtk` component, or `GTK2::gdk_pixbuf` for the `gdk_pixbuf` component, etc.

`GTK2::sigc++`

  Added in version 3.5.

  Target encapsulating the usage requirements to enable c++11 on its dependents when using sigc++ 2.5.1 or higher. This target is automatically applied to dependent targets as needed.

## Result Variables

This module defines the following variables:

`GTK2_FOUND`

  Boolean indicating whether GTK and all specified components are found.

`GTK2_VERSION`

  The version of GTK found (x.y.z).

`GTK2_MAJOR_VERSION`

  The major version of GTK found.

`GTK2_MINOR_VERSION`

  The minor version of GTK found.

`GTK2_PATCH_VERSION`

  The patch version of GTK found.

`GTK2_INCLUDE_DIRS`

  Include directories containing headers needed to use GTK.

`GTK2_LIBRARIES`

  Libraries needed to link against to use GTK.

`GTK2_TARGETS`

  Added in version 3.5.

  A list of all defined imported targets.

`GTK2_DEFINITIONS`

  Additional compiler flags needed to use GTK.

## Input Variables

This module accepts the following optional variables before calling the `find_package(GTK2)`:

`GTK2_DEBUG`

  Boolean variable that enables verbose debugging output of this module.

`GTK2_ADDITIONAL_SUFFIXES`

  A list of additional path suffixes to search for include files.

`GTK2_USE_IMPORTED_TARGETS`

  Added in version 3.5.

  When this variable is set to boolean true, `GTK2_LIBRARIES` variable will contain a list imported targets instead of library paths.

## Examples

### Examples: Finding GTK version 2

Call `find_package()` once. Here are some examples to pick from.

Require GTK 2.6 or later:

    find_package(GTK2 2.6 REQUIRED COMPONENTS gtk)

Require GTK 2.10 or later and its Glade component:

    find_package(GTK2 2.10 REQUIRED COMPONENTS gtk glade)

Search for GTK/GTKMM 2.8 or later:

    find_package(GTK2 2.8 COMPONENTS gtk gtkmm)

Finding GTK 2 and linking it to a project target:

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

### Examples: Finding GTK version 3 or later

Finding GTK 3 with `FindPkgConfig` instead of this module:

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

Or similarly to find GTK 4:

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