@@ -0,0 +1,49 @@
1+# Creates targets for copying and installing qmlfiles and generating the qmltypes file for a plugin
2+#
3+# add_qml_test(plugin version plugin_export sub_path [DEPENDS target1 [target2 ...]])
4+#
5+# plugin_export folder where plugin will be found (plugins/modules/imports)
6+# TARGETS additional install targets (eg the plugin shared object)
7+#
8+# Two targets will be created:
9+# - PluginName-qmlfiles - Copies the qml files (*.qml, *.js, qmldir) into the shadow build folder.
10+# - PluginName-qmltypes - Generates the qmltypes file in the shadow build folder.
11+
12+
13+macro(export_qmlplugin PLUGIN VERSION PLUGIN_EXPORT PLUGIN_SUBPATH)
14+ set(multi_value_keywords TARGETS)
15+ cmake_parse_arguments(qmlplugin "" "" "${multi_value_keywords}" ${ARGN})
16+
17+ file(GLOB QMLFILES
18+ *.qml
19+ *.js
20+ qmldir
21+ )
22+
23+ # copy the qmldir file
24+ add_custom_target(${PLUGIN}-qmlfiles ALL
25+ COMMAND cp ${QMLFILES} ${CMAKE_BINARY_DIR}/${PLUGIN_EXPORT}/${PLUGIN_SUBPATH}
26+ DEPENDS ${QMLFILES}
27+ )
28+
29+ # create the plugin.qmltypes file
30+ add_custom_target(${PLUGIN}-qmltypes ALL
31+ COMMAND qmlplugindump -notrelocatable ${PLUGIN} ${VERSION} ${CMAKE_BINARY_DIR}/${PLUGIN_EXPORT} > ${CMAKE_BINARY_DIR}/${PLUGIN_EXPORT}/${PLUGIN_SUBPATH}/plugin.qmltypes
32+ )
33+ add_dependencies(${PLUGIN}-qmltypes ${PLUGIN}-qmlfiles ${qmlplugin_TARGETS})
34+
35+ # install the qmldir file.
36+ install(FILES ${QMLFILES}
37+ DESTINATION ${SHELL_APP_DIR}/${PLUGIN_EXPORT}/${PLUGIN_SUBPATH}
38+ )
39+
40+ # install the qmltypes file.
41+ install(FILES ${CMAKE_BINARY_DIR}/${PLUGIN_EXPORT}/${PLUGIN_SUBPATH}/plugin.qmltypes
42+ DESTINATION ${SHELL_APP_DIR}/${PLUGIN_EXPORT}/${PLUGIN_SUBPATH}
43+ )
44+
45+ # install the additional targets
46+ install(TARGETS ${qmlplugin_TARGETS}
47+ DESTINATION ${SHELL_APP_DIR}/${PLUGIN_EXPORT}/${PLUGIN_SUBPATH}
48+ )
49+endmacro(export_qmlplugin)