on xenial help sign in
Added plugin cmake procedure for qmltypes files.

Approved by Daniel d'Andrada, PS Jenkins bot.

commit1e59aa1728e378ff84c7d44806143d833a89825d authorNick Dedekind <nicholas.dedekind@gmail.com> dateMon 8 Jul 2013, 12:23 (13 years ago) parent2268f70bb1fce6
13 files changed+81−73
cmake/modules/Plugins.cmake+48 plugins/HudClient/CMakeLists.txt+5−12 plugins/HudClient/qmldir+1 plugins/LightDM/CMakeLists.txt+5−12 plugins/LightDM/qmldir+1 plugins/ListViewWithPageHeader/CMakeLists.txt+5−12 plugins/ListViewWithPageHeader/qmldir+1 plugins/Ubuntu/Gestures/CMakeLists.txt+5−13 plugins/Ubuntu/Gestures/qmldir+1 plugins/Unity/CMakeLists.txt+5−12 plugins/Unity/qmldir+1 plugins/Utils/CMakeLists.txt+2−12 plugins/Utils/qmldir+1
cmake/modules/Plugins.cmakenew file+48
@@ -0,0 +1,48 @@
1+# Creates targets for copying and installing qmlfiles and generating the qmltypes file for a plugin
2+#
3+# export_qmlplugin(plugin version sub_path [TARGETS target1 [target2 ...]])
4+#
5+# TARGETS additional install targets (eg the plugin shared object)
6+#
7+# Two targets will be created:
8+# - plugin-qmlfiles - Copies the qml files (*.qml, *.js, qmldir) into the shadow build folder.
9+# - plugin-qmltypes - Generates the qmltypes file in the shadow build folder.
10+
11+
12+macro(export_qmlplugin PLUGIN VERSION PLUGIN_SUBPATH)
13+ set(multi_value_keywords TARGETS)
14+ cmake_parse_arguments(qmlplugin "" "" "${multi_value_keywords}" ${ARGN})
15+
16+ file(GLOB QMLFILES
17+ *.qml
18+ *.js
19+ qmldir
20+ )
21+
22+ # copy the qmldir file
23+ add_custom_target(${PLUGIN}-qmlfiles ALL
24+ COMMAND cp ${QMLFILES} ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}
25+ DEPENDS ${QMLFILES}
26+ )
27+
28+ # create the plugin.qmltypes file
29+ add_custom_target(${PLUGIN}-qmltypes ALL
30+ COMMAND qmlplugindump -notrelocatable ${PLUGIN} ${VERSION} ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
31+ )
32+ add_dependencies(${PLUGIN}-qmltypes ${PLUGIN}-qmlfiles ${qmlplugin_TARGETS})
33+
34+ # install the qmldir file.
35+ install(FILES ${QMLFILES}
36+ DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/${PLUGIN_SUBPATH}
37+ )
38+
39+ # install the qmltypes file.
40+ install(FILES ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
41+ DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/${PLUGIN_SUBPATH}
42+ )
43+
44+ # install the additional targets
45+ install(TARGETS ${qmlplugin_TARGETS}
46+ DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/${PLUGIN_SUBPATH}
47+ )
48+endmacro(export_qmlplugin)
plugins/HudClient/CMakeLists.txt+5−12
@@ -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,15 +38,5 @@ target_link_libraries(HudClientQml
3538
3639qt5_use_modules(HudClientQml Qml)
3740
38−# copy qmldir file into build directory for shadow builds
39−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
40− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
41− )
42−
43−install(TARGETS HudClientQml
44− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/HudClient
45− )
46−
47−install(FILES qmldir
48− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/HudClient
49− )
41+# export the qmldir and qmltypes files
42+export_qmlplugin(HudClient 0.1 HudClient TARGETS HudClientQml)
plugins/HudClient/qmldir+1
@@ -1 +1,2 @@
11plugin HudClientQml
2+typeinfo plugin.qmltypes
plugins/LightDM/CMakeLists.txt+5−12
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14# Dependencies
25include(FindPkgConfig)
36pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
@@ -32,15 +35,5 @@ target_link_libraries(LightDM-qml
3235
3336qt5_use_modules(LightDM-qml Gui Qml)
3437
35−# copy qmldir file into build directory for shadow builds
36−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
37− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
38− )
39−
40−install(TARGETS LightDM-qml
41− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/LightDM
42− )
43−
44−install(FILES qmldir
45− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/LightDM
46− )
38+# export the qmldir and qmltypes files
39+export_qmlplugin(LightDM 0.1 LightDM TARGETS LightDM-qml)
plugins/LightDM/qmldir+1
@@ -1,2 +1,3 @@
11module LightDM
22plugin LightDM-qml
3+typeinfo plugin.qmltypes
plugins/ListViewWithPageHeader/CMakeLists.txt+5−12
@@ -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,15 +33,5 @@ target_link_libraries(ListViewWithPageHeader-qml
3033
3134qt5_use_modules(ListViewWithPageHeader-qml Qml Quick)
3235
33−# copy qmldir file into build directory for shadow builds
34−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
35− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
36− )
37−
38−install(TARGETS ListViewWithPageHeader-qml
39− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/ListViewWithPageHeader
40− )
41−
42−install(FILES qmldir
43− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/ListViewWithPageHeader
44− )
36+# export the qmldir and qmltypes files
37+export_qmlplugin(ListViewWithPageHeader 0.1 ListViewWithPageHeader TARGETS ListViewWithPageHeader-qml)
plugins/ListViewWithPageHeader/qmldir+1
@@ -1,2 +1,3 @@
11module ListViewWithPageHeader
22plugin ListViewWithPageHeader-qml
3+typeinfo plugin.qmltypes
plugins/Ubuntu/Gestures/CMakeLists.txt+5−13
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14set(CMAKE_AUTOMOC ON)
25
36include(FindPkgConfig)
@@ -20,16 +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−# copy files into build directory for shadow builds
24−add_custom_target(UbuntuGestureQmlDirFile ALL
25− COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
26− DEPENDS qmldir
27−)
28−
29−install(TARGETS UbuntuGestureQml
30− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Ubuntu/Gestures
31− )
32−
33−install(FILES qmldir
34− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Ubuntu/Gestures
35− )
26+# export the qmldir and qmltypes files
27+export_qmlplugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures TARGETS UbuntuGestureQml)
plugins/Ubuntu/Gestures/qmldir+1
@@ -1,2 +1,3 @@
11module Ubuntu.Gestures
22plugin UbuntuGestureQml
3+typeinfo plugin.qmltypes
plugins/Unity/CMakeLists.txt+5−12
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
14# Dependencies
25include(FindPkgConfig)
36pkg_check_modules(QTDEE REQUIRED libdee-qt5)
@@ -42,15 +45,5 @@ target_link_libraries(Unity-qml
4245
4346qt5_use_modules(Unity-qml Qml)
4447
45−# copy qmldir file into build directory for shadow builds
46−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
47− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
48− )
49−
50−install(TARGETS Unity-qml
51− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Unity
52− )
53−
54−install(FILES qmldir
55− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Unity
56− )
48+# export the qmldir and qmltypes files
49+export_qmlplugin(Unity 0.1 Unity TARGETS Unity-qml)
plugins/Unity/qmldir+1
@@ -1,2 +1,3 @@
11module Unity
22plugin Unity-qml
3+typeinfo plugin.qmltypes
plugins/Utils/CMakeLists.txt+2−12
@@ -22,15 +22,5 @@ set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
2222
2323qt5_use_modules(Utils-qml Qml Quick)
2424
25−# copy qmldir file into build directory for shadow builds
26−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
27− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
28− )
29−
30−install(TARGETS Utils-qml
31− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Utils
32− )
33−
34−install(FILES qmldir
35− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Utils
36− )
25+# export the qmldir and qmltypes files
26+export_qmlplugin(Utils 0.1 Utils TARGETS Utils-qml)
plugins/Utils/qmldir+1
@@ -1,2 +1,3 @@
11module Utils
22plugin Utils-qml
3+typeinfo plugin.qmltypes