diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-09-09 16:19:11 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-09-12 19:26:58 +0200 |
commit | 3685483c4b79b4075bab6d341174a395359d1b4a (patch) | |
tree | e27e0dc368cc7d712cc8cd91c8f787e0151caf8d /cmake/QtFindPackageHelpers.cmake | |
parent | a3cb002511d7e2cc73234611795c1947620aedd5 (diff) |
CMake: Add facility to mark package dependencies as optional
Every public dependency of a Qt module results in a find_package call in
the consuming project. But not all public dependencies are mandatory.
For example, vulkan is only needed if the user project actually uses Qt
classes that pull in vulkan headers.
This patch adds the option MARK_OPTIONAL to qt_find_package.
Dependencies that are marked as optional will not produce an error on
find failure.
Task-number: QTBUG-86421
Change-Id: Ia767e7f36991e236582c7509cbd37ea3487bb695
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtFindPackageHelpers.cmake')
-rw-r--r-- | cmake/QtFindPackageHelpers.cmake | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/cmake/QtFindPackageHelpers.cmake b/cmake/QtFindPackageHelpers.cmake index 0ca585d1d4..c68ba4d14a 100644 --- a/cmake/QtFindPackageHelpers.cmake +++ b/cmake/QtFindPackageHelpers.cmake @@ -15,7 +15,8 @@ endfunction() macro(qt_find_package) # Get the target names we expect to be provided by the package. - set(options CONFIG NO_MODULE MODULE REQUIRED) + set(find_package_options CONFIG NO_MODULE MODULE REQUIRED) + set(options ${find_package_options} MARK_OPTIONAL) set(oneValueArgs MODULE_NAME QMAKE_LIB) set(multiValueArgs PROVIDED_TARGETS COMPONENTS) cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -90,7 +91,7 @@ macro(qt_find_package) endif() # Ensure the options are back in the original unparsed arguments - foreach(opt IN LISTS options) + foreach(opt IN LISTS find_package_options) if(arg_${opt}) list(APPEND arg_UNPARSED_ARGUMENTS ${opt}) endif() @@ -129,8 +130,9 @@ macro(qt_find_package) set(qt_find_package_target_name ${aliased_target}) endif() - set_target_properties(${qt_find_package_target_name} - PROPERTIES INTERFACE_QT_PACKAGE_NAME ${ARGV0}) + set_target_properties(${qt_find_package_target_name} PROPERTIES + INTERFACE_QT_PACKAGE_NAME ${ARGV0} + INTERFACE_QT_PACKAGE_IS_OPTIONAL ${arg_MARK_OPTIONAL}) if(package_version) set_target_properties(${qt_find_package_target_name} PROPERTIES INTERFACE_QT_PACKAGE_VERSION ${ARGV1}) |