# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file LICENSE.rst or https://cmake.org/licensing for details. #[=======================================================================[.rst: FindGTK ------- Finds GTK, glib and GTKGLArea. GTK is a multi-platform toolkit for creating graphical user interfaces. .. note:: This module works only on Unix-like systems and was intended for early GTK branch of 1.x, which is no longer maintained. Use the latest supported GTK version and :module:`FindPkgConfig` module to find GTK in CMake instead of this module. For example: .. code-block:: cmake find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk4>=4.14) target_link_libraries(example PRIVATE PkgConfig::GTK) Result Variables ^^^^^^^^^^^^^^^^ This module defines the following variables: ``GTK_FOUND`` Boolean indicating whether GTK is found. ``GTK_GL_FOUND`` Boolean indicating whether GTK's GL features are found. ``GTK_INCLUDE_DIR`` Include directories containing headers needed to use GTK. ``GTK_LIBRARIES`` Libraries needed to link against for using GTK. Examples ^^^^^^^^ Finding GTK 1.x and creating an interface :ref:`imported target ` that encapsulates its usage requirements for linking to a project target: .. code-block:: cmake find_package(GTK) if(GTK_FOUND) add_library(GTK::GTK INTERFACE IMPORTED) set_target_properties( GTK::GTK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${GTK_INCLUDE_DIR}" INTERFACE_LINK_LIBRARIES "${GTK_LIBRARIES}" ) endif() target_link_libraries(example PRIVATE GTK::GTK) See Also ^^^^^^^^ * The :module:`FindGTK2` module to find GTK version 2. #]=======================================================================] # don't even bother under WIN32 if(UNIX) find_path( GTK_gtk_INCLUDE_PATH NAMES gtk/gtk.h PATH_SUFFIXES gtk-1.2 gtk12 PATHS /usr/openwin/share/include /usr/openwin/include /opt/gnome/include ) # Some Linux distributions (e.g. Red Hat) have glibconfig.h # and glib.h in different directories, so we need to look # for both. # - Atanas Georgiev find_path( GTK_glibconfig_INCLUDE_PATH NAMES glibconfig.h PATH_SUFFIXES glib/include lib/glib/include include/glib12 PATHS /usr/openwin/share/include /opt/gnome/include /opt/gnome/lib/glib/include ) find_path( GTK_glib_INCLUDE_PATH NAMES glib.h PATH_SUFFIXES gtk-1.2 glib-1.2 glib12 glib/include lib/glib/include PATHS /usr/openwin/share/include /opt/gnome/include ) find_path( GTK_gtkgl_INCLUDE_PATH NAMES gtkgl/gtkglarea.h PATHS /usr/openwin/share/include /opt/gnome/include ) find_library( GTK_gtkgl_LIBRARY gtkgl /usr/openwin/lib /opt/gnome/lib ) # # The 12 suffix is thanks to the FreeBSD ports collection # find_library( GTK_gtk_LIBRARY NAMES gtk gtk12 PATHS /usr/openwin/lib /opt/gnome/lib ) find_library( GTK_gdk_LIBRARY NAMES gdk gdk12 PATHS /usr/openwin/lib /opt/gnome/lib ) find_library( GTK_gmodule_LIBRARY NAMES gmodule gmodule12 PATHS /usr/openwin/lib /opt/gnome/lib ) find_library( GTK_glib_LIBRARY NAMES glib glib12 PATHS /usr/openwin/lib /opt/gnome/lib ) find_library( GTK_Xi_LIBRARY NAMES Xi PATHS /usr/openwin/lib /opt/gnome/lib ) find_library( GTK_gthread_LIBRARY NAMES gthread gthread12 PATHS /usr/openwin/lib /opt/gnome/lib ) if(GTK_gtk_INCLUDE_PATH AND GTK_glibconfig_INCLUDE_PATH AND GTK_glib_INCLUDE_PATH AND GTK_gtk_LIBRARY AND GTK_glib_LIBRARY) # Assume that if gtk and glib were found, the other # supporting libraries have also been found. set( GTK_FOUND "YES" ) set( GTK_INCLUDE_DIR ${GTK_gtk_INCLUDE_PATH} ${GTK_glibconfig_INCLUDE_PATH} ${GTK_glib_INCLUDE_PATH} ) set( GTK_LIBRARIES ${GTK_gtk_LIBRARY} ${GTK_gdk_LIBRARY} ${GTK_glib_LIBRARY} ) if(GTK_gmodule_LIBRARY) set(GTK_LIBRARIES ${GTK_LIBRARIES} ${GTK_gmodule_LIBRARY}) endif() if(GTK_gthread_LIBRARY) set(GTK_LIBRARIES ${GTK_LIBRARIES} ${GTK_gthread_LIBRARY}) endif() if(GTK_Xi_LIBRARY) set(GTK_LIBRARIES ${GTK_LIBRARIES} ${GTK_Xi_LIBRARY}) endif() if(GTK_gtkgl_INCLUDE_PATH AND GTK_gtkgl_LIBRARY) set( GTK_GL_FOUND "YES" ) set( GTK_INCLUDE_DIR ${GTK_INCLUDE_DIR} ${GTK_gtkgl_INCLUDE_PATH} ) set( GTK_LIBRARIES ${GTK_gtkgl_LIBRARY} ${GTK_LIBRARIES} ) mark_as_advanced( GTK_gtkgl_LIBRARY GTK_gtkgl_INCLUDE_PATH ) endif() endif() mark_as_advanced( GTK_gdk_LIBRARY GTK_glib_INCLUDE_PATH GTK_glib_LIBRARY GTK_glibconfig_INCLUDE_PATH GTK_gmodule_LIBRARY GTK_gthread_LIBRARY GTK_Xi_LIBRARY GTK_gtk_INCLUDE_PATH GTK_gtk_LIBRARY GTK_gtkgl_INCLUDE_PATH GTK_gtkgl_LIBRARY ) endif()