diff --git a/cmake/QtExecutableHelpers.cmake b/cmake/QtExecutableHelpers.cmake index a7f7678e9e5..f70adad11a5 100644 --- a/cmake/QtExecutableHelpers.cmake +++ b/cmake/QtExecutableHelpers.cmake @@ -20,10 +20,8 @@ function(qt_internal_add_executable name) endif() _qt_internal_create_executable(${name}) - if (ANDROID) - _qt_internal_configure_android_multiabi_target("${name}") - qt_android_generate_deployment_settings("${name}") - qt_android_add_apk_target("${name}") + if(ANDROID) + _qt_internal_android_executable_finalizer(${name}) endif() if(arg_QT_APP AND QT_FEATURE_debug_and_release AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.19.0") diff --git a/src/corelib/Qt6AndroidMacros.cmake b/src/corelib/Qt6AndroidMacros.cmake index 108ccfd2e5a..77965e57a30 100644 --- a/src/corelib/Qt6AndroidMacros.cmake +++ b/src/corelib/Qt6AndroidMacros.cmake @@ -1005,3 +1005,12 @@ function(_qt_internal_configure_android_multiabi_target target) endif() set_target_properties(${target} PROPERTIES _qt_android_abis "${android_abis}") endfunction() + +# The wrapper function that contains routines that need to be called to produce a valid Android +# package for the executable 'target'. The function is added to the finalizer list of the Core +# module and is executed implicitly when configuring user projects. +function(_qt_internal_android_executable_finalizer target) + _qt_internal_configure_android_multiabi_target("${target}") + qt6_android_generate_deployment_settings("${target}") + qt6_android_add_apk_target("${target}") +endfunction() diff --git a/src/corelib/Qt6CoreConfigExtras.cmake.in b/src/corelib/Qt6CoreConfigExtras.cmake.in index 3b9cbb883d8..8b4d3164cf7 100644 --- a/src/corelib/Qt6CoreConfigExtras.cmake.in +++ b/src/corelib/Qt6CoreConfigExtras.cmake.in @@ -13,11 +13,17 @@ endif() # set(_qt5_corelib_extra_includes) if (NOT QT_NO_CREATE_TARGETS) - if (NOT "@QT_NAMESPACE@" STREQUAL "") - set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS QT_NAMESPACE=@QT_NAMESPACE@) + set(__qt_core_target @QT_CMAKE_EXPORT_NAMESPACE@::Core) + get_property(__qt_core_aliased_target TARGET ${__qt_core_target} PROPERTY ALIASED_TARGET) + if(__qt_core_aliased_target) + set(__qt_core_target "${__qt_core_aliased_target}") endif() - set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS $<$>:QT_NO_DEBUG>) - set_property(TARGET @QT_CMAKE_EXPORT_NAMESPACE@::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype) + unset(__qt_core_aliased_target) + if (NOT "@QT_NAMESPACE@" STREQUAL "") + set_property(TARGET ${__qt_core_target} APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS QT_NAMESPACE=@QT_NAMESPACE@) + endif() + set_property(TARGET ${__qt_core_target} APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS $<$>:QT_NO_DEBUG>) + set_property(TARGET ${__qt_core_target} PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype) endif() set(CMAKE_AUTOMOC_MACRO_NAMES "Q_OBJECT" "Q_GADGET" "Q_GADGET_EXPORT" "Q_NAMESPACE" "Q_NAMESPACE_EXPORT") @@ -50,6 +56,12 @@ if(ANDROID_PLATFORM) include("${CMAKE_CURRENT_LIST_DIR}/@QT_CMAKE_EXPORT_NAMESPACE@AndroidMacros.cmake") _qt_internal_create_global_android_targets() _qt_internal_collect_default_android_abis() + if(NOT QT_NO_CREATE_TARGETS) + set_property(TARGET ${__qt_core_target} APPEND PROPERTY + INTERFACE_QT_EXECUTABLE_FINALIZERS + _qt_internal_android_executable_finalizer + ) + endif() endif() if(EMSCRIPTEN) @@ -57,3 +69,5 @@ if(EMSCRIPTEN) endif() _qt_internal_override_example_install_dir_to_dot() + +unset(__qt_core_target) diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index a0334a985e3..ab332cfafc2 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -617,11 +617,6 @@ function(_qt_internal_finalize_executable target) endif() endif() - if(ANDROID) - _qt_internal_configure_android_multiabi_target("${target}") - qt6_android_generate_deployment_settings("${target}") - qt6_android_add_apk_target("${target}") - endif() if(EMSCRIPTEN) _qt_internal_wasm_add_target_helpers("${target}") endif()