diff options
author | Kevin Funk <kevin.funk@kdab.com> | 2019-02-11 11:34:35 +0100 |
---|---|---|
committer | Kevin Funk <kevin.funk@kdab.com> | 2019-02-11 17:13:51 +0000 |
commit | c5e2838b642d2a50d951efe7b582d9261d55dfb7 (patch) | |
tree | 013c0d0086a4c0b0dacea625babb3f847757b82e /cmake/QtModuleConfig.cmake.in | |
parent | c5697c85971ed76f8f89c3214d0f9a874fdb7350 (diff) |
cmake: Make find_package(Qt5 ...) work properly
Introduce a new cached variable INSTALL_CMAKE_NAMESPACE for defining the
prefix used for CMake config files (c.f. "${PREFIX}Core/${PREFIX}CoreConfig.cmake")
Also make sure to `find_dependency(...)` the required packages inside
the individual CMake config files. I.e. in Qt5WidgetsConfig.cmake,
search for Qt5Core, etc. pp..
Change-Id: Idc027925fe9d5323091c4853803ad5ce44b1afc6
Reviewed-by: Jean-Michaƫl Celerier <jean-michael.celerier@kdab.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'cmake/QtModuleConfig.cmake.in')
-rw-r--r-- | cmake/QtModuleConfig.cmake.in | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/cmake/QtModuleConfig.cmake.in b/cmake/QtModuleConfig.cmake.in index e08c4ff87f..e6a2d33983 100644 --- a/cmake/QtModuleConfig.cmake.in +++ b/cmake/QtModuleConfig.cmake.in @@ -1,13 +1,34 @@ @PACKAGE_INIT@ -find_package(Qt@PROJECT_VERSION_MAJOR@ QUIET) +include(CMakeFindDependencyMacro) -include("${CMAKE_CURRENT_LIST_DIR}/@module_versioned@Targets.cmake") +get_filename_component(_import_prefix "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_import_prefix "${_import_prefix}" REALPATH) -if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/@module_versioned@Macros.cmake") - include("${CMAKE_CURRENT_LIST_DIR}/@module_versioned@Macros.cmake") +# note: target_deps example: "Qt5Core\;5.12.0;Qt5Gui\;5.12.0" +set(_target_deps "@target_deps@") +foreach(_target_dep ${_target_deps}) + list(GET _target_dep 0 pkg) + list(GET _target_dep 1 version) + + if (NOT ${pkg}_FOUND) + find_dependency(${pkg} ${version} + PATHS "${CMAKE_CURRENT_LIST_DIR}/.." NO_DEFAULT_PATH + ) + endif() + + if (NOT ${pkg}_FOUND) + set(@target@_FOUND FALSE) + return() + endif() +endforeach() + +include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Targets.cmake") + +if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Macros.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@@target@Macros.cmake") endif() -include QtFeature +include(${_import_prefix}/../@INSTALL_CMAKE_NAMESPACE@/QtFeature.cmake) -qt_make_features_available(Qt::@module@) +qt_make_features_available(Qt::@target@) |