92ee9bd6b8
mkspecs/features/qt.prf adds a dependency on the system threading library if the Qt Core thread feature is enabled. Because qt.prf is loaded by any public or internal Qt project, it's essentially a public dependency for any Qt consumer. To mimic that in CMake, we check if the thread feature is enabled, and and set the Threads::Threads library as a dependency of Qt6::Platform, which is a public target used by all Qt modules and plugins and Qt consumers. We also need to create a Qt6Dependencies.cmake file so we find_package(Threads) every time find_package(Qt6) is called. For the .prl files to be usable, we have to filter out some CMake implementation specific directory separator tokens 'CMAKE_DIRECTORY_ID_SEP' aka '::@', which are added because we call target_link_libraries() with a target created in a different scope (I think). As a result of this change, we shouldn't have to hardcode Threads::Threads in other projects, because it's now a global public dependency. Task-number: QTBUG-85801 Task-number: QTBUG-85877 Change-Id: Ib5d662c43b28e63f7da49d3bd77d0ad751220b31 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
36 lines
1.2 KiB
CMake
36 lines
1.2 KiB
CMake
# note: _third_party_deps example: "ICU\\;1.0\\;i18n uc data;ZLIB\\;\\;"
|
|
set(_third_party_deps "@third_party_deps@")
|
|
|
|
@third_party_extra@
|
|
|
|
foreach(_target_dep ${_third_party_deps})
|
|
list(GET _target_dep 0 pkg)
|
|
list(GET _target_dep 1 version)
|
|
list(GET _target_dep 2 components)
|
|
set(find_package_args "${pkg}")
|
|
if(version)
|
|
list(APPEND find_package_args "${version}")
|
|
endif()
|
|
|
|
if(components)
|
|
string(REPLACE " " ";" components "${components}")
|
|
find_dependency(${find_package_args} COMPONENTS ${components})
|
|
else()
|
|
find_dependency(${find_package_args})
|
|
endif()
|
|
|
|
if (NOT ${pkg}_FOUND)
|
|
set(@INSTALL_CMAKE_NAMESPACE@_DEPENDENCIES_FOUND FALSE)
|
|
set(__@INSTALL_CMAKE_NAMESPACE@_message "\nPackage: ${pkg}")
|
|
if(version)
|
|
string(APPEND __@INSTALL_CMAKE_NAMESPACE@_message "\nVersion: ${version}")
|
|
endif()
|
|
if(components)
|
|
string(APPEND __@INSTALL_CMAKE_NAMESPACE@_message "\nComponents: ${components}")
|
|
endif()
|
|
set(@INSTALL_CMAKE_NAMESPACE@_DEPENDENCY_NOT_FOUND_MESSAGE
|
|
"${__@INSTALL_CMAKE_NAMESPACE@_message}")
|
|
return()
|
|
endif()
|
|
endforeach()
|