on xenial help sign in
Added plugin cmake procedure for qmltypes files.
1e59aa1Nick Dedekind
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+
1find_package(Qt5Core REQUIRED)
4find_package(Qt5Core REQUIRED)
2find_package(Qt5Quick REQUIRED)
5find_package(Qt5Quick REQUIRED)
3pkg_search_module(DEE dee-1.0 REQUIRED)
6pkg_search_module(DEE dee-1.0 REQUIRED)
@@ -35,15 +38,5 @@ target_link_libraries(HudClientQml
35
38
36qt5_use_modules(HudClientQml Qml)
39qt5_use_modules(HudClientQml Qml)
37
40
38−# copy qmldir file into build directory for shadow builds
41+# export the qmldir and qmltypes files
39−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
40− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
41− )
42−
43−install(TARGETS HudClientQml
42+export_qmlplugin(HudClient 0.1 HudClient TARGETS HudClientQml)
44− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/HudClient
45− )
46−
47−install(FILES qmldir
48− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/HudClient
49− )
plugins/HudClient/qmldir+1
@@ -1 +1,2 @@
1plugin HudClientQml
1plugin HudClientQml
2+typeinfo plugin.qmltypes
plugins/LightDM/CMakeLists.txt+5−12
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
1# Dependencies
4# Dependencies
2include(FindPkgConfig)
5include(FindPkgConfig)
3pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
6pkg_check_modules(LIBUSERMETRICSOUTPUT REQUIRED libusermetricsoutput-1)
@@ -32,15 +35,5 @@ target_link_libraries(LightDM-qml
32
35
33qt5_use_modules(LightDM-qml Gui Qml)
36qt5_use_modules(LightDM-qml Gui Qml)
34
37
35−# copy qmldir file into build directory for shadow builds
38+# export the qmldir and qmltypes files
36−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
37− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
38− )
39−
40−install(TARGETS LightDM-qml
39+export_qmlplugin(LightDM 0.1 LightDM TARGETS LightDM-qml)
41− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/LightDM
42− )
43−
44−install(FILES qmldir
45− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/LightDM
46− )
plugins/LightDM/qmldir+1
@@ -1,2 +1,3 @@
1module LightDM
1module LightDM
2plugin LightDM-qml
2plugin LightDM-qml
3+typeinfo plugin.qmltypes
plugins/ListViewWithPageHeader/CMakeLists.txt+5−12
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
1# There's no cmake var for v8 include path :-/
4# There's no cmake var for v8 include path :-/
2# so create one
5# so create one
3LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
6LIST(GET Qt5Core_INCLUDE_DIRS 0 QtCoreDir0)
@@ -30,15 +33,5 @@ target_link_libraries(ListViewWithPageHeader-qml
30
33
31qt5_use_modules(ListViewWithPageHeader-qml Qml Quick)
34qt5_use_modules(ListViewWithPageHeader-qml Qml Quick)
32
35
33−# copy qmldir file into build directory for shadow builds
36+# export the qmldir and qmltypes files
34−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
35− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
36− )
37−
38−install(TARGETS ListViewWithPageHeader-qml
37+export_qmlplugin(ListViewWithPageHeader 0.1 ListViewWithPageHeader TARGETS ListViewWithPageHeader-qml)
39− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/ListViewWithPageHeader
40− )
41−
42−install(FILES qmldir
43− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/ListViewWithPageHeader
44− )
plugins/ListViewWithPageHeader/qmldir+1
@@ -1,2 +1,3 @@
1module ListViewWithPageHeader
1module ListViewWithPageHeader
2plugin ListViewWithPageHeader-qml
2plugin 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+
1set(CMAKE_AUTOMOC ON)
4set(CMAKE_AUTOMOC ON)
2
5
3include(FindPkgConfig)
6include(FindPkgConfig)
@@ -20,16 +23,5 @@ qt5_use_modules(UbuntuGestureQml Core Quick)
20# So that Foo.cpp can #include "Foo.moc"
23# So that Foo.cpp can #include "Foo.moc"
21include_directories(${CMAKE_CURRENT_BINARY_DIR})
24include_directories(${CMAKE_CURRENT_BINARY_DIR})
22
25
23−# copy files into build directory for shadow builds
26+# export the qmldir and qmltypes files
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
27+export_qmlplugin(Ubuntu.Gestures 0.1 Ubuntu/Gestures 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− )
plugins/Ubuntu/Gestures/qmldir+1
@@ -1,2 +1,3 @@
1module Ubuntu.Gestures
1module Ubuntu.Gestures
2plugin UbuntuGestureQml
2plugin UbuntuGestureQml
3+typeinfo plugin.qmltypes
plugins/Unity/CMakeLists.txt+5−12
@@ -1,3 +1,6 @@
1+# export_qmlplugin macro
2+include(Plugins)
3+
1# Dependencies
4# Dependencies
2include(FindPkgConfig)
5include(FindPkgConfig)
3pkg_check_modules(QTDEE REQUIRED libdee-qt5)
6pkg_check_modules(QTDEE REQUIRED libdee-qt5)
@@ -42,15 +45,5 @@ target_link_libraries(Unity-qml
42
45
43qt5_use_modules(Unity-qml Qml)
46qt5_use_modules(Unity-qml Qml)
44
47
45−# copy qmldir file into build directory for shadow builds
48+# export the qmldir and qmltypes files
46−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
47− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
48− )
49−
50−install(TARGETS Unity-qml
49+export_qmlplugin(Unity 0.1 Unity TARGETS Unity-qml)
51− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Unity
52− )
53−
54−install(FILES qmldir
55− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Unity
56− )
plugins/Unity/qmldir+1
@@ -1,2 +1,3 @@
1module Unity
1module Unity
2plugin Unity-qml
2plugin 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)
22
22
23qt5_use_modules(Utils-qml Qml Quick)
23qt5_use_modules(Utils-qml Qml Quick)
24
24
25−# copy qmldir file into build directory for shadow builds
25+# export the qmldir and qmltypes files
26−file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
27− DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
28− )
29−
30−install(TARGETS Utils-qml
26+export_qmlplugin(Utils 0.1 Utils TARGETS Utils-qml)
31− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Utils
32− )
33−
34−install(FILES qmldir
35− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/Utils
36− )
plugins/Utils/qmldir+1
@@ -1,2 +1,3 @@
1module Utils
1module Utils
2plugin Utils-qml
2plugin Utils-qml
3+typeinfo plugin.qmltypes