From e6f89f8751e6e65d4a36a125cc3fe398098ba504 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Thu, 23 Mar 2017 17:10:45 +0100 Subject: New CMake - add install and uninstall targets - compatibility for systems without pkg-config --- cmake/MultiFind.cmake | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 cmake/MultiFind.cmake (limited to 'cmake/MultiFind.cmake') diff --git a/cmake/MultiFind.cmake b/cmake/MultiFind.cmake new file mode 100644 index 00000000..b40a4677 --- /dev/null +++ b/cmake/MultiFind.cmake @@ -0,0 +1,45 @@ +include(CMakeParseArguments) + +function(find_packages result) + cmake_parse_arguments(ARGS "" "" "REQUIRED;OPTIONAL" ${ARGN}) + set(_res "") + set(_res_libs "") + foreach(pkg ${ARGS_REQUIRED}) + string(REPLACE ">=" ";" pkg_ ${pkg}) + list(GET pkg_ "0" pkg) + list(LENGTH pkg_ pkg_has_version) + if(pkg_has_version GREATER 1) + list(GET pkg_ "1" pkg_version) + else() + if(${pkg}_GLOBAL_VERSION) + set(pkg_version ${${pkg}_GLOBAL_VERSION}) + else() + unset(pkg_version) + endif() + endif() + find_package(${pkg} ${pkg_version} REQUIRED) + list(APPEND _res ${${pkg}_PKG_CONFIG_NAME}) + list(APPEND _res_libs ${${pkg}_LIBRARIES}) + endforeach(pkg) + foreach(pkg ${ARGS_OPTIONAL}) + string(REPLACE ">=" ";" pkg_ ${pkg}) + list(GET pkg_ "0" pkg) + list(LENGTH pkg_ pkg_has_version) + if(pkg_has_version GREATER 1) + list(GET pkg_ "1" pkg_version) + else() + if(${pkg}_GLOBAL_VERSION) + set(pkg_version ${${pkg}_GLOBAL_VERSION}) + else() + unset(pkg_version) + endif() + endif() + find_package(${pkg} ${pkg_version}) + if(${pkg}_FOUND) + list(APPEND _res ${${pkg}_PKG_CONFIG_NAME}) + list(APPEND _res_libs ${${pkg}_LIBRARIES}) + endif() + endforeach(pkg) + set(${result} "${_res}" PARENT_SCOPE) + set(${result}_LIBS "${_res_libs}" PARENT_SCOPE) +endfunction() -- cgit v1.2.3-54-g00ecf