aboutsummaryrefslogtreecommitdiff
path: root/modules/ECMFindQmlModule.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'modules/ECMFindQmlModule.cmake')
-rw-r--r--modules/ECMFindQmlModule.cmake48
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/ECMFindQmlModule.cmake b/modules/ECMFindQmlModule.cmake
new file mode 100644
index 00000000..5d961af7
--- /dev/null
+++ b/modules/ECMFindQmlModule.cmake
@@ -0,0 +1,48 @@
+# SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+#[=======================================================================[.rst:
+ECMFindQmlModule
+----------------
+
+Find QML import modules through a find_qmlmodule() call.
+It uses the qmlplugindump application to find the plugins and sets them up as
+runtime dependencies.
+
+This is useful so that when we configure a project we are noified when some
+QML imports are not present in the system, thus having the application compilable
+but fail at runtime.
+
+::
+
+ ecm_find_qmlmodule(<module_name> <version>...)
+
+Any further arguments passed will be forwarded into a find_package() call. See
+find_package() documentation for more information.
+
+Usage example:
+
+.. code-block:: cmake
+
+ ecm_find_qmlmodule(org.kde.kirigami 2.1)
+
+Since 5.38.0.
+#]=======================================================================]
+
+set(MODULES_DIR ${CMAKE_CURRENT_LIST_DIR})
+
+function(ecm_find_qmlmodule MODULE_NAME VERSION)
+ set(GENMODULE "${MODULE_NAME}-QMLModule")
+
+ configure_file("${MODULES_DIR}/ECMFindQmlModule.cmake.in" "Find${GENMODULE}.cmake" @ONLY)
+
+ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_BINARY_DIR}" ${CMAKE_MODULE_PATH})
+ find_package(${GENMODULE} ${ARGN})
+
+ if(COMMAND set_package_properties)
+ set_package_properties(${GENMODULE} PROPERTIES
+ DESCRIPTION "QML module '${MODULE_NAME}' is a runtime dependency."
+ TYPE RUNTIME)
+ endif()
+endfunction()