Created
May 30, 2020 09:44
-
-
Save suzp1984/68b7152d5b7050f9bac2d843c252adfa to your computer and use it in GitHub Desktop.
cmake find package module
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# use pkg-config system | |
find_package(PkgConfig QUIET) | |
# FIND_GLIB_COMPONENT macro | |
macro(FIND_GLIB_COMPONENT _component_prefix _pkgconfig_name _library) | |
pkg_check_modules(PC_${_component_prefix} ${_pkgconfig_name}) | |
set(${_component_prefix}_INCLUDE_DIRS ${PC_${_component_prefix}_INCLUDE_DIRS}) | |
find_library(${_component_prefix}_LIBRARIES | |
NAMES ${_library} | |
HINTS ${PC_${_component_prefix}_LIBRARY_DIRS} ${PC_${_component_prefix}_LIBDIR} | |
) | |
endmacro() | |
# Find all the libraries of GLIB-2.0 | |
FIND_GLIB_COMPONENT(GLIB glib-2.0 glib-2.0) | |
FIND_GLIB_COMPONENT(GIO gio-2.0 gio-2.0) | |
FIND_GLIB_COMPONENT(GIO_UNIX gio-unix-2.0 gio-unix-2.0) | |
FIND_GLIB_COMPONENT(GMODULE gmodule-2.0 gmodule-2.0) | |
FIND_GLIB_COMPONENT(GMODULE_EXPORT gmodule-export-2.0 gmodule-export-2.0) | |
FIND_GLIB_COMPONENT(GMODULE_NO_EXPORT gmodule-no-export-2.0 gmodule-no-export-2.0) | |
FIND_GLIB_COMPONENT(GOBJECT gobject-2.0 gobject-2.0) | |
FIND_GLIB_COMPONENT(GTHREAD gthread-2.0 gthread-2.0) | |
FIND_GLIB_COMPONENT(GTHREAD gthreadhh-2.0 gthreadhh-2.0) | |
set(_GLIB_REQUIRED_VARS | |
GLIB_INCLUDE_DIRS | |
GLIB_LIBRARIES | |
GLIB_VERSION | |
GIO_INCLUDE_DIRS | |
GIO_LIBRARIES | |
GMODULE_INCLUDE_DIRS | |
GMODULE_LIBRARIES | |
GOBJECT_INCLUDE_DIRS | |
GOBJECT_LIBRARIES | |
GTHREAD_INCLUDE_DIRS | |
GTHREAD_LIBRARIES) | |
foreach (_component ${GLIB_FIND_COMPONENTS}) | |
set(_glib_component "GLIB_${_component}") | |
string(TOUPPER ${_glib_component} _UPPER_NAME) | |
list(APPEND _GLIB_REQUIRED_VARS ${_UPPER_NAME}_INCLUDE_DIRS ${_UPPER_NAME}_LIBRARIES) | |
endforeach () | |
# setup GLib_FOUND variable | |
include(FindPackageHandleStandardArgs) | |
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLib REQUIRED_VARS _GLIB_REQUIRED_VARS | |
VERSION_VAR GLIB_VERSION) | |
# may used to setup some GUI configuration tools | |
mark_as_advanced( | |
GLIB_INCLUDE_DIRS | |
GLIB_LIBRARIES | |
GIO_INCLUDE_DIRS | |
GIO_LIBRARIES | |
GIO_UNIX_INCLUDE_DIRS | |
GIO_UNIX_LIBRARIES | |
GMODULE_INCLUDE_DIRS | |
GMODULE_LIBRARIES | |
GMODULE_EXPORT_INCLUDE_DIRS | |
GMODULE_EXPORT_LIBRARIES | |
GMODULE_NO_EXPORT_INCLUDE_DIRS | |
GMODULE_NO_EXPORT_LIBRARIES | |
GOBJECT_INCLUDE_DIRS | |
GOBJECT_LIBRARIES | |
GTHREAD_INCLUDE_DIRS | |
GTHREAD_LIBRARIES | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment