From 0a6a1057bae017b64d568854584f47b1f82a84dd Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sat, 1 Apr 2023 13:58:56 +0200 Subject: [PATCH] plugins fixed --- CMakeLists.txt | 4 ---- cmake/QSkinnyMacros.cmake | 26 ++++++++++++++++++++----- examples/boxes/CMakeLists.txt | 2 +- examples/buttons/CMakeLists.txt | 2 +- examples/desktop/CMakeLists.txt | 2 +- examples/frames/CMakeLists.txt | 2 +- examples/gallery/CMakeLists.txt | 2 +- examples/glabels/CMakeLists.txt | 2 +- examples/iotdashboard/CMakeLists.txt | 2 +- examples/layouts/CMakeLists.txt | 2 +- examples/listbox/CMakeLists.txt | 2 +- examples/messagebox/CMakeLists.txt | 2 +- examples/messageboxQml/CMakeLists.txt | 2 +- examples/mycontrols/CMakeLists.txt | 2 +- examples/qvgviewer/CMakeLists.txt | 2 +- examples/tabview/CMakeLists.txt | 2 +- examples/thumbnails/CMakeLists.txt | 2 +- inputcontext/CMakeLists.txt | 3 +-- playground/anchors/CMakeLists.txt | 2 +- playground/dialogbuttons/CMakeLists.txt | 2 +- playground/dials/CMakeLists.txt | 2 +- playground/gradients/CMakeLists.txt | 2 +- playground/grids/CMakeLists.txt | 2 +- playground/images/CMakeLists.txt | 2 +- playground/inputpanel/CMakeLists.txt | 2 +- playground/invoker/CMakeLists.txt | 2 +- playground/shadows/CMakeLists.txt | 2 +- playground/shapes/CMakeLists.txt | 2 +- playground/webview/CMakeLists.txt | 2 +- skins/material3/CMakeLists.txt | 8 +++----- skins/squiek/CMakeLists.txt | 4 +--- support/CMakeLists.txt | 23 +++++++++------------- 32 files changed, 61 insertions(+), 59 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 43fffdf3..7035039f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,10 +5,6 @@ project(QSkinny HOMEPAGE_URL "https://github.com/uwerat/qskinny" VERSION 999.99.9) -# Useful unsupported scenarios: -# - When cross compiling we might want to build the tools only -# - Suppressing - option(BUILD_QSKDLL "Build libs ( not plugins ) as shared library" ON) option(BUILD_QML_EXPORT "Exporting QSkinny to QML" ON) diff --git a/cmake/QSkinnyMacros.cmake b/cmake/QSkinnyMacros.cmake index e966cefb..9f2e7436 100644 --- a/cmake/QSkinnyMacros.cmake +++ b/cmake/QSkinnyMacros.cmake @@ -36,27 +36,43 @@ function(qsk_add_library) endfunction() -function(qsk_plugin PLUGIN_NAME TYPE) +function(qsk_add_plugin PLUGIN_NAME TYPE CLASS_NAME) + + # qt6_add_plugin calls add_library as MODULE - even when SHARED + # is requested. In general this ould be the correct type for plugins - + # however we also want to link the plugin when ENABLE_ENSURE_SKINS + # is enabled. + # Probably the correct solution would be to put the implemetation of + # the skins into a regular lib and the plugins would contain + # the factories only. TODO ... + # So for the moment better don't do: + # qt6_add_plugin(${PLUGIN_NAME} SHARED ${CLASS_NAME} ) if(QT_VERSION_MAJOR VERSION_GREATER_EQUAL 6) - qt6_add_library(${PLUGIN_NAME} SHARED ${HEADERS} ${SOURCES} ${OTHER_FILES}) + qt6_add_library(${PLUGIN_NAME} SHARED ) else() - add_library(${PLUGIN_NAME} SHARED ${HEADERS} ${SOURCES} ${OTHER_FILES}) + add_library(${PLUGIN_NAME} SHARED ) endif() + set_target_properties(${PLUGIN_NAME} PROPERTIES + QT_PLUGIN_CLASS_NAME ${CLASS_NAME} ) + + target_compile_definitions(${PLUGIN_NAME} PRIVATE QT_PLUGIN ) + + target_sources( ${PLUGIN_NAME} PRIVATE ${HEADERS} ${SOURCES} ) target_link_libraries(${PLUGIN_NAME} PRIVATE qskinny) set_target_properties(${PLUGIN_NAME} PROPERTIES FOLDER ${TYPE}) # the plugin has to go to .../plugins/${TYPE}/ - # otherwise it can't be loaded at runtime ... + # otherwise it won't be found at runtime ... set_target_properties( ${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/plugins/${TYPE}") endfunction() -function(qsk_example EXAMPLE_NAME) +function(qsk_add_example EXAMPLE_NAME) set(TARGET_NAME ${EXAMPLE_NAME}) diff --git a/examples/boxes/CMakeLists.txt b/examples/boxes/CMakeLists.txt index 9561279c..80dd3bf6 100644 --- a/examples/boxes/CMakeLists.txt +++ b/examples/boxes/CMakeLists.txt @@ -1,4 +1,4 @@ list(APPEND HEADERS Box.h) list(APPEND SOURCES Box.cpp main.cpp) -qsk_example(boxes) +qsk_add_example(boxes) diff --git a/examples/buttons/CMakeLists.txt b/examples/buttons/CMakeLists.txt index c161eae5..3c5708ef 100644 --- a/examples/buttons/CMakeLists.txt +++ b/examples/buttons/CMakeLists.txt @@ -1,4 +1,4 @@ list(APPEND RESOURCES buttons.qrc) list(APPEND SOURCES main.cpp) -qsk_example(buttons) +qsk_add_example(buttons) diff --git a/examples/desktop/CMakeLists.txt b/examples/desktop/CMakeLists.txt index 0575cfd4..58ba4aea 100644 --- a/examples/desktop/CMakeLists.txt +++ b/examples/desktop/CMakeLists.txt @@ -1,3 +1,3 @@ list(APPEND SOURCES main.cpp) -qsk_example(desktop) +qsk_add_example(desktop) diff --git a/examples/frames/CMakeLists.txt b/examples/frames/CMakeLists.txt index 70ac529d..5a5e3e33 100644 --- a/examples/frames/CMakeLists.txt +++ b/examples/frames/CMakeLists.txt @@ -2,5 +2,5 @@ list(APPEND RESOURCES frames.qrc) list(APPEND HEADERS Frame.h) list(APPEND SOURCES Frame.cpp main.cpp) -qsk_example(frames) +qsk_add_example(frames) diff --git a/examples/gallery/CMakeLists.txt b/examples/gallery/CMakeLists.txt index e1ecdb47..11b6fc72 100644 --- a/examples/gallery/CMakeLists.txt +++ b/examples/gallery/CMakeLists.txt @@ -19,4 +19,4 @@ list(APPEND SOURCES Page.cpp main.cpp) -qsk_example(gallery) +qsk_add_example(gallery) diff --git a/examples/glabels/CMakeLists.txt b/examples/glabels/CMakeLists.txt index fe3f4308..21b9c53f 100644 --- a/examples/glabels/CMakeLists.txt +++ b/examples/glabels/CMakeLists.txt @@ -1,4 +1,4 @@ list(APPEND RESOURCES glabels.qrc) list(APPEND SOURCES main.cpp) -qsk_example(glabels) +qsk_add_example(glabels) diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index addfc531..9afbf48c 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -75,4 +75,4 @@ list(APPEND HEADERS nodes/DiagramSegmentsNode.h nodes/RadialTickmarksNode.h) -qsk_example(iotdashboard) +qsk_add_example(iotdashboard) diff --git a/examples/layouts/CMakeLists.txt b/examples/layouts/CMakeLists.txt index 5b5b9e81..5b83f063 100644 --- a/examples/layouts/CMakeLists.txt +++ b/examples/layouts/CMakeLists.txt @@ -19,4 +19,4 @@ list(APPEND SOURCES StackLayoutPage.cpp main.cpp) -qsk_example(layouts) +qsk_add_example(layouts) diff --git a/examples/listbox/CMakeLists.txt b/examples/listbox/CMakeLists.txt index d52b9f62..726eeee2 100644 --- a/examples/listbox/CMakeLists.txt +++ b/examples/listbox/CMakeLists.txt @@ -1,3 +1,3 @@ list(APPEND SOURCES main.cpp) -qsk_example(listbox) +qsk_add_example(listbox) diff --git a/examples/messagebox/CMakeLists.txt b/examples/messagebox/CMakeLists.txt index daf9aa05..a251f796 100644 --- a/examples/messagebox/CMakeLists.txt +++ b/examples/messagebox/CMakeLists.txt @@ -1,3 +1,3 @@ list(APPEND SOURCES main.cpp) -qsk_example(messagebox) +qsk_add_example(messagebox) diff --git a/examples/messageboxQml/CMakeLists.txt b/examples/messageboxQml/CMakeLists.txt index 6127c76e..c14712d9 100644 --- a/examples/messageboxQml/CMakeLists.txt +++ b/examples/messageboxQml/CMakeLists.txt @@ -1,4 +1,4 @@ list(APPEND RESSOURCES messagebox.qrc) list(APPEND SOURCES main.cpp) -qsk_example(messageboxQml) +qsk_add_example(messageboxQml) diff --git a/examples/mycontrols/CMakeLists.txt b/examples/mycontrols/CMakeLists.txt index 4fca17d5..49ad8a07 100644 --- a/examples/mycontrols/CMakeLists.txt +++ b/examples/mycontrols/CMakeLists.txt @@ -9,4 +9,4 @@ list(APPEND HEADERS MyToggleButtonSkinlet.h MySkin.h) -qsk_example(mycontrols) +qsk_add_example(mycontrols) diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index 2741688b..feef8796 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -8,4 +8,4 @@ list(APPEND SOURCES list(APPEND RESOURCES qvgviewer.qrc) -qsk_example(qvgviewer) +qsk_add_example(qvgviewer) diff --git a/examples/tabview/CMakeLists.txt b/examples/tabview/CMakeLists.txt index 473b2f46..965dd8d8 100644 --- a/examples/tabview/CMakeLists.txt +++ b/examples/tabview/CMakeLists.txt @@ -9,4 +9,4 @@ list(APPEND SOURCES OtherSlider.cpp main.cpp) -qsk_example(tabview) +qsk_add_example(tabview) diff --git a/examples/thumbnails/CMakeLists.txt b/examples/thumbnails/CMakeLists.txt index 51362913..62fa42cd 100644 --- a/examples/thumbnails/CMakeLists.txt +++ b/examples/thumbnails/CMakeLists.txt @@ -1,3 +1,3 @@ list(APPEND SOURCES main.cpp) -qsk_example(thumbnails) +qsk_add_example(thumbnails) diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index 18bbc8ee..6cd90725 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -2,7 +2,6 @@ set(TARGET_NAME qskinputcontext) list(APPEND HEADERS QskInputContextGlobal.h) list(APPEND SOURCES QskInputContextPlugin.cpp) -list(APPEND OTHER_FILES metadata.json) if(NOT LINUX AND ENABLE_HUNSPELL) message(WARNING "Feature 'hunspell' only available for UNIX!") @@ -32,7 +31,7 @@ if(ENABLE_HUNSPELL) ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp) endif() -qsk_plugin(qskinputcontext platforminputcontexts) +qsk_add_plugin(qskinputcontext platforminputcontexts QskInputContextPlugin) if(ENABLE_PINYIN) target_link_libraries(qskinputcontext PRIVATE pinyin Fcitx5::Utils) diff --git a/playground/anchors/CMakeLists.txt b/playground/anchors/CMakeLists.txt index c539c13d..079cd9a6 100644 --- a/playground/anchors/CMakeLists.txt +++ b/playground/anchors/CMakeLists.txt @@ -18,4 +18,4 @@ list(APPEND SOURCES AnchorBox.cpp main.cpp) -qsk_example(anchors) +qsk_add_example(anchors) diff --git a/playground/dialogbuttons/CMakeLists.txt b/playground/dialogbuttons/CMakeLists.txt index 92f55974..01023ac0 100644 --- a/playground/dialogbuttons/CMakeLists.txt +++ b/playground/dialogbuttons/CMakeLists.txt @@ -1,4 +1,4 @@ list(APPEND HEADERS Window.h) list(APPEND SOURCES Window.cpp main.cpp) -qsk_example(dialogbuttons) +qsk_add_example(dialogbuttons) diff --git a/playground/dials/CMakeLists.txt b/playground/dials/CMakeLists.txt index 6684e6d8..7d409637 100644 --- a/playground/dials/CMakeLists.txt +++ b/playground/dials/CMakeLists.txt @@ -13,4 +13,4 @@ list(APPEND SOURCES Dashboard.cpp main.cpp) -qsk_example(dials) +qsk_add_example(dials) diff --git a/playground/gradients/CMakeLists.txt b/playground/gradients/CMakeLists.txt index 2e58f005..6da16c46 100644 --- a/playground/gradients/CMakeLists.txt +++ b/playground/gradients/CMakeLists.txt @@ -8,7 +8,7 @@ if(TARGET quickshapes_private) endif() -qsk_example(gradients) +qsk_add_example(gradients) if(TARGET quickshapes_private) target_compile_definitions(gradients PRIVATE SHAPE_GRADIENT) diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt index c6cda32c..4e0f1e96 100644 --- a/playground/grids/CMakeLists.txt +++ b/playground/grids/CMakeLists.txt @@ -15,6 +15,6 @@ list(APPEND SOURCES TestBox.cpp main.cpp) -qsk_example(grids) +qsk_add_example(grids) target_link_libraries(grids PRIVATE Qt::QuickWidgets) diff --git a/playground/images/CMakeLists.txt b/playground/images/CMakeLists.txt index 7f732d02..054c7e34 100644 --- a/playground/images/CMakeLists.txt +++ b/playground/images/CMakeLists.txt @@ -2,4 +2,4 @@ list(APPEND RESOURCES images.qrc) list(APPEND HEADERS Image.h) list(APPEND SOURCES Image.cpp main.cpp) -qsk_example(images) +qsk_add_example(images) diff --git a/playground/inputpanel/CMakeLists.txt b/playground/inputpanel/CMakeLists.txt index 912eaeee..03bbd5ee 100644 --- a/playground/inputpanel/CMakeLists.txt +++ b/playground/inputpanel/CMakeLists.txt @@ -1,3 +1,3 @@ list(APPEND SOURCES main.cpp) -qsk_example(inputpanel) +qsk_add_example(inputpanel) diff --git a/playground/invoker/CMakeLists.txt b/playground/invoker/CMakeLists.txt index d9c4c447..efd92139 100644 --- a/playground/invoker/CMakeLists.txt +++ b/playground/invoker/CMakeLists.txt @@ -1,6 +1,6 @@ list(APPEND HEADERS Callback.h Invoker.h) list(APPEND SOURCES Callback.cpp Invoker.cpp main.cpp) -qsk_example(invoker) +qsk_add_example(invoker) set_target_properties(invoker PROPERTIES AUTOMOC_MOC_OPTIONS --no-warnings) diff --git a/playground/shadows/CMakeLists.txt b/playground/shadows/CMakeLists.txt index 0e229aa2..534a3eda 100644 --- a/playground/shadows/CMakeLists.txt +++ b/playground/shadows/CMakeLists.txt @@ -1,4 +1,4 @@ list(APPEND HEADERS ShadowedBox.h) list(APPEND SOURCES ShadowedBox.cpp main.cpp) -qsk_example(shadows) +qsk_add_example(shadows) diff --git a/playground/shapes/CMakeLists.txt b/playground/shapes/CMakeLists.txt index f9d79131..b1fff6f6 100644 --- a/playground/shapes/CMakeLists.txt +++ b/playground/shapes/CMakeLists.txt @@ -15,7 +15,7 @@ if( BUILD_QML_EXPORT ) list(APPEND RESOURCES shapes.qrc) endif() -qsk_example(shapes) +qsk_add_example(shapes) if( BUILD_QML_EXPORT ) target_compile_definitions(shapes PRIVATE NO_QML) diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt index 666462e7..2056dbb0 100644 --- a/playground/webview/CMakeLists.txt +++ b/playground/webview/CMakeLists.txt @@ -1,6 +1,6 @@ list(APPEND SOURCES main.cpp) -qsk_example(webview) +qsk_add_example(webview) if (QT_VERSION_MAJOR VERSION_GREATER "5") target_link_libraries(webview PRIVATE Qt::WebEngineQuick Qt::WebEngineQuickPrivate) diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index cc96431a..d8ff72a4 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -9,9 +9,7 @@ list(APPEND SOURCES QskMaterial3Skin.cpp QskMaterial3SkinFactory.cpp) -list(APPEND RESSOURCES - icons.qrc ) +list(APPEND RESSOURCES icons.qrc ) -list(APPEND OTHER_FILES metadata.json) - -qsk_plugin(material3skin skins) +qsk_add_plugin(material3skin skins QskMaterial3SkinFactory) +target_compile_definitions(material3skin PRIVATE QSK_MATERIAL3_MAKEDLL) diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index 516eebf3..db7aaaa6 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -9,7 +9,5 @@ list(APPEND SOURCES QskSquiekSkin.cpp QskSquiekSkinFactory.cpp) -list(APPEND OTHER_FILES metadata.json) - -qsk_plugin(squiekskin skins) +qsk_add_plugin(squiekskin skins QskSquiekSkinFactory) target_compile_definitions(squiekskin PRIVATE QSK_SQUIEK_MAKEDLL) diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 850b6cb9..70ba17ff 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -43,32 +43,27 @@ if(HACK_FONT_CONFIG) FONTCONFIG_FILE=${QSK_FONTCONF_FILE}) endif() -target_link_libraries(${TARGET_NAME} - PUBLIC - qskinny) +target_link_libraries(${TARGET_NAME} PUBLIC qskinny) if (BUILD_QSKDLL) - target_compile_definitions(${TARGET_NAME} - PRIVATE - SKINNY_MAKEDLL) + target_compile_definitions(${TARGET_NAME} PRIVATE SKINNY_MAKEDLL) endif() target_compile_definitions(${TARGET_NAME} - PRIVATE - PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) + PRIVATE PLUGIN_PATH=${CMAKE_BINARY_DIR}/plugins) -target_include_directories(${TARGET_NAME} - PUBLIC - ${CMAKE_CURRENT_LIST_DIR}) +target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) + +if(ENABLE_ENSURE_SKINS) + #set( ENABLE_ENSURE_SKINS OFF ) +endif() if(ENABLE_ENSURE_SKINS) target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/skins) target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) target_link_libraries(${TARGET_NAME} - PRIVATE - squiekskin - material3skin) + PRIVATE squiekskin material3skin) endif() install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS})