APK: Handle Qt being configured with custom paths
This commit is contained in:
parent
0bee777a04
commit
e7b3ec67c5
|
@ -115,6 +115,62 @@ endfunction()
|
|||
add_android_apk_extra_libs("${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}")
|
||||
list_to_string("," "" "" "${ANDROID_APK_EXTRA_LIBS}" ANDROID_APK_EXTRA_LIBS)
|
||||
|
||||
# query certain qmake variables
|
||||
foreach(QMAKE_VARIABLE QT_INSTALL_QML QT_INSTALL_PLUGINS QT_INSTALL_IMPORTS)
|
||||
query_qmake_variable(${QMAKE_VARIABLE})
|
||||
endforeach()
|
||||
|
||||
# define function to get a list of (existing) paths
|
||||
function(compose_dirs_for_android_apk)
|
||||
# parse arguments
|
||||
set(OPTIONAL_ARGS)
|
||||
set(ONE_VALUE_ARGS OUTPUT_VARIABLE)
|
||||
set(MULTI_VALUE_ARGS POSSIBLE_DIRS)
|
||||
cmake_parse_arguments(ARGS "${OPTIONAL_ARGS}" "${ONE_VALUE_ARGS}" "${MULTI_VALUE_ARGS}" ${ARGN})
|
||||
|
||||
list(REMOVE_DUPLICATES ARGS_POSSIBLE_DIRS)
|
||||
unset(DIRS)
|
||||
foreach(POSSIBLE_DIR ${ARGS_POSSIBLE_DIRS})
|
||||
if(IS_DIRECTORY "${POSSIBLE_DIR}")
|
||||
list(APPEND DIRS "${POSSIBLE_DIR}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
list_to_string("," "" "" "${DIRS}" DIRS)
|
||||
set("${ARGS_OUTPUT_VARIABLE}" "${DIRS}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# pick QML import paths from install prefix
|
||||
compose_dirs_for_android_apk(
|
||||
OUTPUT_VARIABLE ANDROID_APK_QML_IMPORT_DIRS
|
||||
POSSIBLE_DIRS
|
||||
"${QT_INSTALL_IMPORTS}"
|
||||
"${QT_INSTALL_QML}"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/qt/imports"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/imports"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/qt/qml"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/qml"
|
||||
)
|
||||
if(NOT ANDROID_APK_QML_IMPORT_DIRS)
|
||||
message(WARNING "Unable to find QML import directories for making the APK.")
|
||||
endif()
|
||||
|
||||
# pick extra plugins from install prefix
|
||||
compose_dirs_for_android_apk(
|
||||
OUTPUT_VARIABLE ANDROID_APK_EXTRA_PLUGIN_DIRS
|
||||
POSSIBLE_DIRS
|
||||
"${QT_INSTALL_PLUGINS}"
|
||||
"${QT_INSTALL_QML}"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/qt/plugins"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/plugins"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/qt/qml"
|
||||
"${CMAKE_INSTALL_PREFIX}/lib/qml"
|
||||
"${CMAKE_INSTALL_PREFIX}/share"
|
||||
)
|
||||
if(NOT ANDROID_APK_EXTRA_PLUGIN_DIRS)
|
||||
message(WARNING "Unable to find extra plugin directories for making the APK.")
|
||||
endif()
|
||||
|
||||
# find template for deployment JSON
|
||||
find_template_file("android-deployment.json" QT_UTILITIES ANDROID_DEPLOYMENT_JSON_TEMPLATE_FILE)
|
||||
set(ANDROID_DEPLOYMENT_JSON_FILE "${CMAKE_CURRENT_BINARY_DIR}/android-deployment.json")
|
||||
|
|
|
@ -109,5 +109,19 @@ if(NOT DEFINED QT_LINKAGE_DETERMINED)
|
|||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(query_qmake_variable QMAKE_VARIABLE)
|
||||
get_target_property(QMAKE_BIN Qt5::qmake IMPORTED_LOCATION)
|
||||
execute_process(
|
||||
COMMAND "${QMAKE_BIN}" -query "${QMAKE_VARIABLE}"
|
||||
RESULT_VARIABLE "${QMAKE_VARIABLE}_RESULT"
|
||||
OUTPUT_VARIABLE "${QMAKE_VARIABLE}"
|
||||
)
|
||||
if(NOT "${${QMAKE_VARIABLE}_RESULT}" STREQUAL 0 OR "${${QMAKE_VARIABLE}}" STREQUAL "")
|
||||
message(FATAL_ERROR "Unable to read qmake variable ${QMAKE_VARIABLE} via \"${QMAKE_BIN} -query ${QMAKE_VARIABLE}\"; output was \"${${QMAKE_VARIABLE}}\".")
|
||||
endif()
|
||||
string(REGEX REPLACE "\n$" "" "${QMAKE_VARIABLE}" "${${QMAKE_VARIABLE}}")
|
||||
message(STATUS "qmake variable ${QMAKE_VARIABLE} is ${${QMAKE_VARIABLE}}")
|
||||
endmacro()
|
||||
|
||||
set(QT_LINKAGE_DETERMINED YES)
|
||||
endif(NOT DEFINED QT_LINKAGE_DETERMINED)
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
"target-architecture": "@CMAKE_ANDROID_ARCH_ABI@",
|
||||
"application-binary": "$<TARGET_FILE:@TARGET_PREFIX@@META_PROJECT_NAME@@TARGET_SUFFIX@>",
|
||||
"qml-root-path": "@CMAKE_CURRENT_SOURCE_DIR@",
|
||||
"qml-import-paths": "@CMAKE_INSTALL_PREFIX@/lib/qml",
|
||||
"qml-import-paths": "@ANDROID_APK_QML_IMPORT_DIRS@",
|
||||
"android-extra-libs": "@ANDROID_APK_EXTRA_LIBS@",
|
||||
"android-extra-plugins": "@CMAKE_INSTALL_PREFIX@/share,@CMAKE_INSTALL_PREFIX@/lib/qml",
|
||||
"android-extra-plugins": "@ANDROID_APK_EXTRA_PLUGIN_DIRS@",
|
||||
"android-package-source-directory": "@ANDROID_APK_SUBDIR@",
|
||||
"stdcpp-path":"@ANDROID_APK_CXX_STANDARD_LIBRARY@",
|
||||
"sdkBuildToolsRevision": "@ANDROID_APK_BUILD_TOOLS_VERSION@",
|
||||
|
|
Loading…
Reference in New Issue