diff options
| author | Přemysl Eric Janouch <p@janouch.name> | 2026-01-18 04:19:40 +0100 |
|---|---|---|
| committer | Přemysl Eric Janouch <p@janouch.name> | 2026-01-18 04:19:55 +0100 |
| commit | 566069e9b96bc5b1a8954f5288c817e7522e97e8 (patch) | |
| tree | e5cf4a1f19955bab725f582c325522a880c60aa3 | |
| parent | 11be1951ce674fe18e90cc933f95d0784464b5d5 (diff) | |
| download | xK-566069e9b96bc5b1a8954f5288c817e7522e97e8.tar.gz xK-566069e9b96bc5b1a8954f5288c817e7522e97e8.tar.xz xK-566069e9b96bc5b1a8954f5288c817e7522e97e8.zip | |
xTq: adjust Android package
| -rw-r--r-- | xT/CMakeLists.txt | 83 |
1 files changed, 61 insertions, 22 deletions
diff --git a/xT/CMakeLists.txt b/xT/CMakeLists.txt index 0f9f26e..dd56c5c 100644 --- a/xT/CMakeLists.txt +++ b/xT/CMakeLists.txt @@ -50,7 +50,32 @@ foreach (icon xT xT-highlighted) list (APPEND icon_rsrc_list "${icon_png}") endforeach () -if (APPLE) +function (android_mipmap_icon svg density size output_dir output) + set (_mipmap_dir "${output_dir}/res/mipmap-${density}") + set (_png "${_mipmap_dir}/ic_launcher.png") + set (${output} "${_png}" PARENT_SCOPE) + + find_program (rsvg_convert_EXECUTABLE rsvg-convert REQUIRED) + add_custom_command (OUTPUT "${_png}" + COMMAND ${CMAKE_COMMAND} -E make_directory "${_mipmap_dir}" + COMMAND ${rsvg_convert_EXECUTABLE} "--output=${_png}" + "--width=${size}" "--height=${size}" -- "${svg}" + DEPENDS "${svg}" + COMMENT "Generating Android ${density} application icon" VERBATIM) +endfunction () + +if (ANDROID) + set (android_base "${PROJECT_BINARY_DIR}/android") + set (android_icon_list) + foreach (density_size + ldpi:36 mdpi:48 hdpi:72 xhdpi:96 xxhdpi:144 xxxhdpi:192) + string (REPLACE ":" ";" density_size "${density_size}") + android_mipmap_icon ("${PROJECT_SOURCE_DIR}/xT.svg" + ${density_size} "${android_base}" android_icon) + list (APPEND android_icon_list "${android_icon}") + endforeach () + add_custom_target (android-icons ALL DEPENDS ${android_icon_list}) +elseif (APPLE) set (MACOSX_BUNDLE_ICON_FILE xT.icns) icon_to_icns ("${PROJECT_SOURCE_DIR}/xT.svg" "${MACOSX_BUNDLE_ICON_FILE}" icon_icns) @@ -96,29 +121,43 @@ add_custom_command (OUTPUT xC-proto.cpp add_custom_target (xC-proto DEPENDS ${PROJECT_BINARY_DIR}/xC-proto.cpp) list (APPEND project_sources "${root}/liberty/tools/lxdrgen-cpp-qt.cpp") -qt_add_executable (xT - xT.cpp ${project_config} ${project_sources} "${icon_icns}") -add_dependencies (xT xC-proto) -qt_add_resources (xT "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list}) -target_link_libraries (xT PRIVATE Qt6::Widgets Qt6::Network Qt6::Multimedia) -set_target_properties (xT PROPERTIES WIN32_EXECUTABLE ON MACOSX_BUNDLE ON - MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xT) -# https://stackoverflow.com/questions/79079161 and resolved in Qt Creator 16. -set (QT_QML_GENERATE_QMLLS_INI ON) +# Qt Widgets is unusable on mobile, so just exclude it from there. +if (NOT ANDROID) + qt_add_executable (xT + xT.cpp ${project_config} ${project_sources} "${icon_icns}") + add_dependencies (xT xC-proto) + qt_add_resources (xT "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list}) + target_link_libraries (xT PRIVATE Qt6::Widgets Qt6::Network Qt6::Multimedia) + set_target_properties (xT PROPERTIES + WIN32_EXECUTABLE ON + MACOSX_BUNDLE ON + MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xT) +endif () -# TODO(p): Perhaps do it in one-or-the-other way, -# as Qt Quick sucks on the desktop, and Qt Widgets is unusable on mobile. -qt_add_executable (xTq - xTq.cpp ${project_config} ${project_sources} "${icon_icns}") -set_property (SOURCE xTq.qml APPEND PROPERTY QT_QML_SOURCE_TYPENAME Main) -qt_add_qml_module (xTq URI xTquick VERSION 1.0 QML_FILES xTq.qml) -add_dependencies (xTq xC-proto) -qt_add_resources (xTq "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list}) -target_link_libraries (xTq PRIVATE - Qt6::Quick Qt6::QuickControls2 Qt6::Network Qt6::Multimedia) -set_target_properties (xTq PROPERTIES WIN32_EXECUTABLE ON MACOSX_BUNDLE ON - MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xTq) +# Qt Quick makes for a degraded experience on the desktop. +option (BUILD_XTQ "Build Qt Quick frontend (xTq)" ${ANDROID}) +if (BUILD_XTQ) + qt_add_executable (xTq + xTq.cpp ${project_config} ${project_sources} "${icon_icns}") + set_property (SOURCE xTq.qml APPEND PROPERTY QT_QML_SOURCE_TYPENAME Main) + qt_add_qml_module (xTq URI xTquick VERSION 1.0 QML_FILES xTq.qml) + add_dependencies (xTq xC-proto) + qt_add_resources (xTq "rsrc" PREFIX / FILES "${beep}" ${icon_rsrc_list}) + target_link_libraries (xTq PRIVATE + Qt6::Quick Qt6::QuickControls2 Qt6::Network Qt6::Multimedia) + set_target_properties (xTq PROPERTIES + WIN32_EXECUTABLE ON + MACOSX_BUNDLE ON + MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.xTq + QT_ANDROID_PACKAGE_NAME name.janouch.xTq + QT_ANDROID_PACKAGE_SOURCE_DIR "${android_base}" + QT_ANDROID_APP_ICON "@mipmap/ic_launcher" + QT_ANDROID_APP_NAME xT) + if (ANDROID) + add_dependencies (xTq android-icons) + endif () +endif () # The files to be installed include (GNUInstallDirs) |
