path: root/cmake
diff options
authorAlexandru Croitor <>2019-11-07 13:18:21 +0100
committerAlexandru Croitor <>2019-11-08 15:09:54 +0000
commitc51fe841f472edb4af5d56d436fa6df201b2fc9a (patch)
treeb70aee0528842dc3cb3a30df05409191df4fbbe8 /cmake
parent3cfaa19c60e43e022e97f5ebe76d70a0610950a6 (diff)
Fix handling of _nolink targets for the QtNetwork module
When a _nolink target is exported, instead of getting the original namespace prefix, it gets the Qt6 prefix (OpenSSL::OpenSSL_nolink -> Qt6::OpenSSL_nolink). There is some special case code in Network autotests which tries to access the former target name, which doesn't exist when building standalone tests. Make sure to create a Qt6:: library alias for _nolink targets during a build (so before the library is exported), and change the Network autotests project to use this Qt6:: namespaced library, which will ensure it is found both in a standalone tests build and in a regular Qt build. Also make sure to actually call find_package to find the OpenSSL library when building standalone tests, otherwise configuration will fail. Change-Id: I3da5b958e72e745a50380f8ab1644459a7c6b005 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <>
Diffstat (limited to 'cmake')
1 files changed, 5 insertions, 1 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index b7d7ab3eaa..5e2268254e 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -685,8 +685,11 @@ function(qt_create_nolink_target target dependee_target)
# Create the nolink interface target, assign the properties from the original target,
# associate the nolink target with the same export which contains
# the target that uses the _nolink target.
- # Also create a namespaced alias of the form {$target}::${target}_nolink which is used by
+ # Also create a namespaced alias of the form ${target}::${target}_nolink which is used by
# our modules.
+ # Also create a Qt namespaced alias target, because when exporting via install(EXPORT)
+ # Vulkan::Vulkan_nolink transforms into Qt6::Vulkan_nolink, and the latter needs to be an
+ # accessible alias for standalone tests.
if(NOT TARGET "${nolink_target}")
add_library("${nolink_target}" INTERFACE)
set(prefixed_nolink_target "${target}_nolink")
@@ -703,6 +706,7 @@ function(qt_create_nolink_target target dependee_target)
add_library(${prefixed_nolink_target} ALIAS ${nolink_target})
+ add_library("${INSTALL_CMAKE_NAMESPACE}::${nolink_target}" ALIAS ${nolink_target})
set(export_name "${INSTALL_CMAKE_NAMESPACE}${dependee_target}Targets")
qt_install(TARGETS ${nolink_target} EXPORT ${export_name})