on xenial help sign in
Use macro for exporting a plugin.
commit3f853a3a90f4c364aa99fbde501b8fd53b0ef646 authorNick Dedekind <nicholas.dedekind@gmail.com> dateThu 4 Jul 2013, 10:32 (13 years ago) parentb85dc9b
13 files changed+82−168
cmake/modules/Plugins.cmake+49 plugins/HudClient/CMakeLists.txt+5−27 plugins/HudClient/qmldir+1−1 plugins/LightDM/CMakeLists.txt+5−27 plugins/LightDM/qmldir+1−1 plugins/ListViewWithPageHeader/CMakeLists.txt+5−27 plugins/ListViewWithPageHeader/qmldir+1−1 plugins/Ubuntu/Gestures/CMakeLists.txt+5−27 plugins/Ubuntu/Gestures/qmldir+1−1 plugins/Unity/CMakeLists.txt+5−27 plugins/Unity/qmldir+1−1 plugins/Utils/CMakeLists.txt+2−27 plugins/Utils/qmldir+1−1
cmake/modules/Plugins.cmakenew file+49
@@ -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)
plugins/HudClient/CMakeLists.txt+5−27
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14find_package(Qt5Core REQUIRED)
25find_package(Qt5Quick REQUIRED)
36pkg_search_module(DEE dee-1.0 REQUIRED)
@@ -35,30 +38,5 @@ target_link_libraries(HudClientQml
3538
3639qt5_use_modules(HudClientQml Qml)
3740
38−file(GLOB HudClient_QMLFILES
39− qmldir
40−)
41−
42−# copy qmldir file into build directory for shadow builds
43−add_custom_target(HudClientQmlFiles ALL
44− COMMAND cp ${HudClient_QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
45− DEPENDS ${HudClient_QMLFILES}
46−)
47−
48−# create the HudClient.qmltypes file
49−add_custom_target(HudClientQmlTypes ALL
50− COMMAND qmlplugindump -notrelocatable HudClient 0.1 ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_CURRENT_BINARY_DIR}/HudClient.qmltypes
51−)
52−add_dependencies(HudClientQmlTypes HudClientQml HudClientQmlFiles)
53−
54−install(TARGETS HudClientQml
55− DESTINATION ${SHELL_APP_DIR}/plugins/HudClient
56− )
57−
58−install(FILES ${HudClient_QMLFILES}
59− DESTINATION ${SHELL_APP_DIR}/plugins/HudClient
60−)
61−
62−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/HudClient.qmltypes
63− DESTINATION ${SHELL_APP_DIR}/plugins/HudClient
64− )
41+# export the qmldir and qmltypes files
42+export_qmlplugin(HudClient 0.1 plugins HudClient TARGETS HudClientQml)
plugins/HudClient/qmldir+1−1
@@ -1,2 +1,2 @@
11plugin HudClientQml
2−typeinfo HudClient.qmltypes
2+typeinfo plugin.qmltypes
plugins/LightDM/CMakeLists.txt+5−27
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14# Dependencies
25include(FindPkgConfig)
36pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
@@ -32,30 +35,5 @@ target_link_libraries(LightDM-qml
3235
3336qt5_use_modules(LightDM-qml Gui Qml)
3437
35−file(GLOB LightDM_QMLFILES
36− qmldir
37−)
38−
39−# copy qmldir file into build directory for shadow builds
40−add_custom_target(LightDMQmlFiles ALL
41− COMMAND cp ${LightDM_QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
42− DEPENDS ${LightDM_QMLFILES}
43−)
44−
45−# create the LightDM.qmltypes file
46−add_custom_target(LightDM-qmltyes ALL
47− COMMAND qmlplugindump -notrelocatable LightDM 0.1 ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_CURRENT_BINARY_DIR}/LightDM.qmltypes
48−)
49−add_dependencies(LightDM-qmltyes LightDM-qml LightDMQmlFiles)
50−
51−install(TARGETS LightDM-qml
52− DESTINATION ${SHELL_APP_DIR}/plugins/LightDM
53− )
54−
55−install(FILES ${LightDM_QMLFILES}
56− DESTINATION ${SHELL_APP_DIR}/plugins/LightDM
57− )
58−
59−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/LightDM.qmltypes
60− DESTINATION ${SHELL_APP_DIR}/plugins/LightDM
61− )
38+# export the qmldir and qmltypes files
39+export_qmlplugin(LightDM 0.1 plugins LightDM TARGETS LightDM-qml)
plugins/LightDM/qmldir+1−1
@@ -1,3 +1,3 @@
11module LightDM
22plugin LightDM-qml
3−typeinfo LightDM.qmltypes
3+typeinfo plugin.qmltypes
plugins/ListViewWithPageHeader/CMakeLists.txt+5−27
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14# There's no cmake var for v8 include path :-/
25# so create one
36LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -30,30 +33,5 @@ target_link_libraries(ListViewWithPageHeader-qml
3033
3134qt5_use_modules(ListViewWithPageHeader-qml Qml Quick)
3235
33−file(GLOB ListViewWithPageHeader_QMLFILES
34− qmldir
35−)
36−
37−# copy qmldir file into build directory for shadow builds
38−add_custom_target(ListViewWithPageHeaderQmlFiles ALL
39− COMMAND cp ${ListViewWithPageHeader_QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
40− DEPENDS ${ListViewWithPageHeader_QMLFILES}
41−)
42−
43−# create the ListViewWithPageHeader.qmltypes file
44−add_custom_target(ListViewWithPageHeader-qmltypes ALL
45− COMMAND qmlplugindump -notrelocatable ListViewWithPageHeader 0.1 ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_CURRENT_BINARY_DIR}/ListViewWithPageHeader.qmltypes
46−)
47−add_dependencies(ListViewWithPageHeader-qmltypes ListViewWithPageHeader-qml ListViewWithPageHeaderQmlFiles)
48−
49−install(TARGETS ListViewWithPageHeader-qml
50− DESTINATION ${SHELL_APP_DIR}/plugins/ListViewWithPageHeader
51− )
52−
53−install(FILES ${ListViewWithPageHeader_QMLFILES}
54− DESTINATION ${SHELL_APP_DIR}/plugins/ListViewWithPageHeader
55− )
56−
57−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ListViewWithPageHeader.qmltypes
58− DESTINATION ${SHELL_APP_DIR}/plugins/ListViewWithPageHeader
59− )
36+# export the qmldir and qmltypes files
37+export_qmlplugin(ListViewWithPageHeader 0.1 plugins ListViewWithPageHeader TARGETS ListViewWithPageHeader-qml)
plugins/ListViewWithPageHeader/qmldir+1−1
@@ -1,3 +1,3 @@
11module ListViewWithPageHeader
22plugin ListViewWithPageHeader-qml
3−typeinfo ListViewWithPageHeader.qmltypes
3+typeinfo plugin.qmltypes
plugins/Ubuntu/Gestures/CMakeLists.txt+5−27
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14set(CMAKE_AUTOMOC ON)
25
36include(FindPkgConfig)
@@ -20,30 +23,5 @@ qt5_use_modules(UbuntuGestureQml Core Quick)
2023# So that Foo.cpp can #include "Foo.moc"
2124include_directories(${CMAKE_CURRENT_BINARY_DIR})
2225
23−file(GLOB UbuntuGesture_QMLFILES
24− qmldir
25−)
26−
27−# copy qmldir file into build directory for shadow builds
28−add_custom_target(UbuntuGestureQmlFiles ALL
29− COMMAND cp ${UbuntuGesture_QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
30− DEPENDS ${UbuntuGesture_QMLFILES}
31−)
32−
33−# create the UbuntuGestures.qmltypes file
34−add_custom_target(UbuntuGesture-qmltypes ALL
35− COMMAND qmlplugindump -notrelocatable Ubuntu.Gestures 0.1 ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_CURRENT_BINARY_DIR}/UbuntuGestures.qmltypes
36−)
37−add_dependencies(UbuntuGesture-qmltypes UbuntuGestureQml UbuntuGestureQmlFiles)
38−
39−install(TARGETS UbuntuGestureQml
40− DESTINATION ${SHELL_APP_DIR}/plugins/Ubuntu/Gestures
41− )
42−
43−install(FILES ${UbuntuGesture_QMLFILES}
44− DESTINATION ${SHELL_APP_DIR}/plugins/Ubuntu/Gestures
45− )
46−
47−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/UbuntuGestures.qmltypes
48− DESTINATION ${SHELL_APP_DIR}/plugins/Ubuntu/Gestures
49− )
26+# export the qmldir and qmltypes files
27+export_qmlplugin(Ubuntu.Gestures 0.1 plugins Ubuntu/Gestures TARGETS UbuntuGestureQml)
plugins/Ubuntu/Gestures/qmldir+1−1
@@ -1,3 +1,3 @@
11module Ubuntu.Gestures
22plugin UbuntuGestureQml
3−typeinfo UbuntuGestures.qmltypes
3+typeinfo plugin.qmltypes
plugins/Unity/CMakeLists.txt+5−27
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14# Dependencies
25include(FindPkgConfig)
36pkg_check_modules(QTDEE REQUIRED libdee-qt5)
@@ -43,30 +46,5 @@ target_link_libraries(Unity-qml
4346
4447qt5_use_modules(Unity-qml Qml)
4548
46−file(GLOB Unity_QMLFILES
47− qmldir
48−)
49−
50−# copy qmldir file into build directory for shadow builds
51−add_custom_target(UnityQmlFiles ALL
52− COMMAND cp ${Unity_QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
53− DEPENDS ${Unity_QMLFILES}
54−)
55−
56−# create the Unity.qmltypes file
57−add_custom_target(Unity-qmltypes ALL
58− COMMAND qmlplugindump -notrelocatable Unity 0.1 ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_CURRENT_BINARY_DIR}/Unity.qmltypes
59−)
60−add_dependencies(Unity-qmltypes Unity-qml UnityQmlFiles)
61−
62−install(TARGETS Unity-qml
63− DESTINATION ${SHELL_APP_DIR}/plugins/Unity
64− )
65−
66−install(FILES ${Unity_QMLFILES}
67− DESTINATION ${SHELL_APP_DIR}/plugins/Unity
68− )
69−
70−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Unity.qmltypes
71− DESTINATION ${SHELL_APP_DIR}/plugins/Unity
72− )
49+# export the qmldir and qmltypes files
50+export_qmlplugin(Unity 0.1 plugins Unity TARGETS Unity-qml)
plugins/Unity/qmldir+1−1
@@ -1,3 +1,3 @@
11module Unity
22plugin Unity-qml
3−typeinfo Unity.qmltypes
3+typeinfo plugin.qmltypes
plugins/Utils/CMakeLists.txt+2−27
@@ -22,30 +22,5 @@ set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
2222
2323qt5_use_modules(Utils-qml Qml Quick)
2424
25−file(GLOB Utils_QMLFILES
26− qmldir
27−)
28−
29−# copy qmldir file into build directory for shadow builds
30−add_custom_target(UtilsQmlFiles ALL
31− COMMAND cp ${Utils_QMLFILES} ${CMAKE_CURRENT_BINARY_DIR}
32− DEPENDS ${Utils_QMLFILES}
33−)
34−
35−# create the Utils.qmltypes file
36−add_custom_target(Utils-qmltypes ALL
37− COMMAND qmlplugindump -notrelocatable Utils 0.1 ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_CURRENT_BINARY_DIR}/Utils.qmltypes
38−)
39−add_dependencies(Utils-qmltypes Utils-qml UtilsQmlFiles)
40−
41−install(TARGETS Utils-qml
42− DESTINATION ${SHELL_APP_DIR}/plugins/Utils
43− )
44−
45−install(FILES ${Utils_QMLFILES}
46− DESTINATION ${SHELL_APP_DIR}/plugins/Utils
47− )
48−
49−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Utils.qmltypes
50− DESTINATION ${SHELL_APP_DIR}/plugins/Utils
51− )
25+# export the qmldir and qmltypes files
26+export_qmlplugin(Utils 0.1 plugins Utils TARGETS Utils-qml)
plugins/Utils/qmldir+1−1
@@ -1,3 +1,3 @@
11module Utils
22plugin Utils-qml
3−typeinfo Utils.qmltypes
3+typeinfo plugin.qmltypes