Add the _qt_internal_android_executable_finalizer wrapper function

_qt_internal_android_executable_finalizer wraps Android-related
function that are needed to created an Android package.
The function is added to the INTERFACE_QT_EXECUTABLE_FINALIZERS
property in Qt Core so it's called implicitly for user projects.

Pick-to: 6.3
Change-Id: I140f53341691dcfdc6ae2ddea520818cf2834eb6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Alexey Edelev 2022-02-25 12:33:15 +01:00
parent fef455999a
commit e7586119e1
4 changed files with 29 additions and 13 deletions

View File

@ -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")

View File

@ -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()

View File

@ -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 $<$<NOT:$<CONFIG:Debug>>: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 $<$<NOT:$<CONFIG:Debug>>: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)

View File

@ -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()