Fix building against an installed static Qt

For ICU we have multiple components, and ICU becomes a public dependency
to QtCore.

When storing the INTERFACE_QT_PACKAGE_COMPONENTS property, make sure to
store the entire list of components, not just the first component -- by
turning the semi-colon separated list into a space separated list.

When processing the components at find_dependency time, we need to
reverse that and pass COMPONENTS directly to ensure a correct parameter
expansion.

Change-Id: I24a0708520e7d5fba039395a151034aee4d4c0e2
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Simon Hausmann 2019-06-25 14:44:29 +02:00
parent e25f9e2008
commit 6290efc4eb
3 changed files with 13 additions and 11 deletions

View File

@ -2174,9 +2174,9 @@ macro(qt_find_package)
endif()
if(arg_COMPONENTS)
set_target_properties(${qt_find_package_target_name}
PROPERTIES
INTERFACE_QT_PACKAGE_COMPONENTS ${arg_COMPONENTS})
string(REPLACE ";" " " components_as_string "${arg_COMPONENTS}")
set_property(TARGET ${qt_find_package_target_name}
PROPERTY INTERFACE_QT_PACKAGE_COMPONENTS ${components_as_string})
endif()
get_property(is_global TARGET ${qt_find_package_target_name} PROPERTY

View File

@ -18,11 +18,12 @@ foreach(_target_dep ${_third_party_deps})
endif()
if(components)
list(APPEND find_package_args "COMPONENTS" ${components})
string(REPLACE " " ";" components "${components}")
find_dependency(${find_package_args} COMPONENTS ${components})
else()
find_dependency(${find_package_args})
endif()
find_dependency(${find_package_args})
if (NOT ${pkg}_FOUND)
set(@INSTALL_CMAKE_NAMESPACE@@target@_FOUND FALSE)
return()

View File

@ -17,12 +17,13 @@ foreach(_target_dep ${_third_party_deps})
list(APPEND find_package_args "${version}")
endif()
if(components)
list(APPEND find_package_args "COMPONENTS" ${components})
endif()
if (NOT ${pkg}_FOUND)
find_dependency(${find_package_args})
if(components)
string(REPLACE " " ";" components "${components}")
find_dependency(${find_package_args} COMPONENTS ${components})
else()
find_dependency(${find_package_args})
endif()
endif()
if (NOT ${pkg}_FOUND)