find_path(GLib2_INCLUDE_DIR NAMES glib.h PATH_SUFFIXES glib-2.0) find_library(GLib2_LIBRARY NAMES glib-2.0) find_library(GLib2_GOBJECT_LIBRARY NAMES gobject-2.0) if(GLib2_LIBRARY) get_filename_component(_GLib2_LIBRARY_DIR "${GLib2_LIBRARY}" DIRECTORY) endif() find_path(GLib2_CONFIG_INCLUDE_DIR NAMES glibconfig.h HINTS "${_GLib2_LIBRARY_DIR}/glib-2.0/include" PATH_SUFFIXES glib-2.0/include lib/glib-2.0/include lib64/glib-2.0/include "lib/${CMAKE_LIBRARY_ARCHITECTURE}/glib-2.0/include") if(GLib2_CONFIG_INCLUDE_DIR) file(STRINGS "${GLib2_CONFIG_INCLUDE_DIR}/glibconfig.h" _GLib2_VERSION_LINES REGEX "^#define GLIB_(MAJOR|MINOR|MICRO)_VERSION[ \t]+[0-9]+") foreach(_component MAJOR MINOR MICRO) string(REGEX MATCH "GLIB_${_component}_VERSION[ \t]+([0-9]+)" _GLib2_VERSION_MATCH "${_GLib2_VERSION_LINES}") set(_GLib2_VERSION_${_component} "${CMAKE_MATCH_1}") endforeach() if(DEFINED _GLib2_VERSION_MAJOR AND DEFINED _GLib2_VERSION_MINOR AND DEFINED _GLib2_VERSION_MICRO) set(GLib2_VERSION "${_GLib2_VERSION_MAJOR}.${_GLib2_VERSION_MINOR}.${_GLib2_VERSION_MICRO}") endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GLib2 REQUIRED_VARS GLib2_LIBRARY GLib2_GOBJECT_LIBRARY GLib2_INCLUDE_DIR GLib2_CONFIG_INCLUDE_DIR VERSION_VAR GLib2_VERSION) if(GLib2_FOUND AND NOT TARGET GLib2::GLib2) add_library(GLib2::GLib2 UNKNOWN IMPORTED) set_target_properties(GLib2::GLib2 PROPERTIES IMPORTED_LOCATION "${GLib2_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${GLib2_INCLUDE_DIR};${GLib2_CONFIG_INCLUDE_DIR}") endif() set(GLib2_INCLUDE_DIRS "${GLib2_INCLUDE_DIR};${GLib2_CONFIG_INCLUDE_DIR}") set(GLib2_LIBRARIES "${GLib2_LIBRARY}") if(GLib2_FOUND AND NOT TARGET GLib2::GObject) add_library(GLib2::GObject UNKNOWN IMPORTED) set_target_properties(GLib2::GObject PROPERTIES IMPORTED_LOCATION "${GLib2_GOBJECT_LIBRARY}" INTERFACE_LINK_LIBRARIES GLib2::GLib2) endif() mark_as_advanced(GLib2_INCLUDE_DIR GLib2_CONFIG_INCLUDE_DIR GLib2_LIBRARY GLib2_GOBJECT_LIBRARY)