From aa1a485dceee5bb6ff8e8222f65d9df4f0137ddb Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Thu, 30 Mar 2023 17:56:14 +0200 Subject: [PATCH] plugins are no libs. however not yet working --- CMakeLists.txt | 10 -------- cmake/QSkinnyMacros.cmake | 45 +++++++++++++++++++++++++++++++++- inputcontext/CMakeLists.txt | 44 +++++++++------------------------ qmlexport/CMakeLists.txt | 2 +- skins/material3/CMakeLists.txt | 30 ++++------------------- skins/squiek/CMakeLists.txt | 31 ++++------------------- src/CMakeLists.txt | 4 +-- support/CMakeLists.txt | 4 +-- tools/svg2qvg/CMakeLists.txt | 2 +- 9 files changed, 72 insertions(+), 100 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 71a3ee53..d19c2cb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,16 +21,6 @@ else() message(FATAL_ERROR "Couldn't find any Qt package !") endif() -if(QT_VERSION_MAJOR VERSION_EQUAL "5") - function(qt_add_executable) - add_executable(${ARGV}) - endfunction(qt_add_executable) - - function(qt_add_library) - add_library(${ARGV}) - endfunction(qt_add_library) -endif() - # Note, that modules might be found in different places. # f.e. when having Qt installations that have only been built # with a subset of modules diff --git a/cmake/QSkinnyMacros.cmake b/cmake/QSkinnyMacros.cmake index e912d86f..72438e33 100644 --- a/cmake/QSkinnyMacros.cmake +++ b/cmake/QSkinnyMacros.cmake @@ -13,11 +13,54 @@ if(TARGET ${Qt}::Svg) endfunction() endif() +function(qsk_add_executable) + + if(QT_VERSION_MAJOR VERSION_EQUAL "5") + add_executable(${ARGV}) + else() + qt6_add_executable(${ARGV}) + endif() + +endfunction() + +function(qsk_add_library) + + if(QT_VERSION_MAJOR VERSION_EQUAL "5") + add_library(${ARGV}) + else() + qt6_add_library(${ARGV}) + endif() + + set_target_properties(${TARGET_NAME} PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ) + +endfunction() + +function(qsk_plugin PLUGIN_NAME TYPE) + + if(QT_VERSION_MAJOR VERSION_EQUAL "5") + add_library(${PLUGIN_NAME} SHARED ${HEADERS} ${SOURCES} ${OTHER_FILES}) + else() + qt6_add_library(${PLUGIN_NAME} SHARED ${HEADERS} ${SOURCES} ${OTHER_FILES}) + endif() + + 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 ... + + set_target_properties( ${PLUGIN_NAME} PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/plugins/${TYPE}") + +endfunction() + function(qsk_example EXAMPLE_NAME) set(TARGET_NAME ${EXAMPLE_NAME}) - qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE + qsk_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${SOURCES} ${HEADERS} ${RESOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES FOLDER examples) diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index 377cafa1..3e1973dc 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -1,52 +1,32 @@ set(TARGET_NAME qskinputcontext) -list(APPEND TARGET_HEADERS - QskInputContextGlobal.h) - -list(APPEND TARGET_SOURCES - QskInputContextPlugin.cpp) - -list(APPEND TARGET_OTHER_FILES - metadata.json) +list(APPEND HEADERS QskInputContextGlobal.h) +list(APPEND SOURCES QskInputContextPlugin.cpp) +list(APPEND OTHER_FILES metadata.json) if(ENABLE_PINYIN) - list(APPEND TARGET_HEADERS + list(APPEND HEADERS ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h) - list(APPEND TARGET_SOURCES + list(APPEND SOURCES ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp) endif() if(ENABLE_HUNSPELL) - list(APPEND TARGET_HEADERS + list(APPEND HEADERS ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h) - list(APPEND TARGET_SOURCES + list(APPEND SOURCES ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp) endif() -qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) +qsk_plugin(qskinputcontext platforminputcontexts) if(ENABLE_PINYIN) - target_link_libraries(${TARGET_NAME} - PRIVATE - pinyin - Fcitx5::Utils) + target_link_libraries(qskinputcontext PRIVATE pinyin Fcitx5::Utils) endif() if(ENABLE_HUNSPELL) - target_link_libraries(${TARGET_NAME} - PRIVATE - hunspell) + target_link_libraries(qskinputcontext PRIVATE hunspell) endif() -if(BUILD_QSKDLL) - target_compile_definitions(${TARGET_NAME} - PRIVATE - QSK_INPUTCONTEXT_MAKEDLL) -endif() - -target_link_libraries(${TARGET_NAME} - PRIVATE - qskinny - Qt::GuiPrivate) - -install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/platforminputcontexts) +target_compile_definitions(qskinputcontext PRIVATE QSK_INPUTCONTEXT_MAKEDLL) +target_link_libraries(qskinputcontext PRIVATE qskinny Qt::GuiPrivate) diff --git a/qmlexport/CMakeLists.txt b/qmlexport/CMakeLists.txt index 4117d6c2..d0c20d64 100644 --- a/qmlexport/CMakeLists.txt +++ b/qmlexport/CMakeLists.txt @@ -13,7 +13,7 @@ list(APPEND TARGET_SOURCES QskMainQml.cpp QskQml.cpp) -qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) +qsk_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index 8cd868ca..cc96431a 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -1,37 +1,17 @@ set(QSK_PLUGIN_SUBDIR skins) -set(TARGET_NAME material3skin) - -list(APPEND TARGET_HEADERS +list(APPEND HEADERS QskMaterial3Global.h QskMaterial3Skin.h QskMaterial3SkinFactory.h) -list(APPEND TARGET_SOURCES +list(APPEND SOURCES QskMaterial3Skin.cpp QskMaterial3SkinFactory.cpp) -list(APPEND TARGET_RESSOURCES +list(APPEND RESSOURCES icons.qrc ) -list(APPEND TARGET_OTHER_FILES - metadata.json) +list(APPEND OTHER_FILES metadata.json) -if(BUILD_QSKDLL) - qt_add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_RESSOURCES} ${TARGET_OTHER_FILES}) -else() - qt_add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_RESSOURCES} ${TARGET_OTHER_FILES}) -endif() - -target_link_libraries(${TARGET_NAME} PRIVATE qskinny) - -if(BUILD_QSKDLL) - target_compile_definitions(${TARGET_NAME} - PRIVATE - QSK_MATERIAL3_MAKEDLL) -endif() - -set_target_properties(${TARGET_NAME} PROPERTIES - FOLDER skins) - -install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) +qsk_plugin(material3skin skins) diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index 3782b0d2..516eebf3 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -1,36 +1,15 @@ set(QSK_PLUGIN_SUBDIR skins) -set(TARGET_NAME squiekskin) - -list(APPEND TARGET_HEADERS +list(APPEND HEADERS QskSquiekGlobal.h QskSquiekSkin.h QskSquiekSkinFactory.h) -list(APPEND TARGET_SOURCES +list(APPEND SOURCES QskSquiekSkin.cpp QskSquiekSkinFactory.cpp) -list(APPEND TARGET_OTHER_FILES - metadata.json) +list(APPEND OTHER_FILES metadata.json) -if(BUILD_QSKDLL) - qt_add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) -else() - qt_add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) -endif() - -target_link_libraries(${TARGET_NAME} - PRIVATE - qskinny) - -if(BUILD_QSKDLL) - target_compile_definitions(${TARGET_NAME} - PRIVATE - QSK_SQUIEK_MAKEDLL) -endif() - -set_target_properties(${TARGET_NAME} PROPERTIES - FOLDER skins) - -install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) +qsk_plugin(squiekskin skins) +target_compile_definitions(squiekskin PRIVATE QSK_SQUIEK_MAKEDLL) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 5115a5aa..9ebba951 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -412,9 +412,9 @@ endif() set(TARGET_NAME qskinny) if(BUILD_QSKDLL) - qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + qsk_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) else() - qt_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + qsk_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) endif() if(BUILD_QSKDLL) diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 92a13df4..ddb272d4 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -14,9 +14,9 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME qsktestsupport) if (BUILD_QSKDLL) - qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) + qsk_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) else() - qt_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS}) + qsk_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS}) endif() if(ENABLE_FONT_CONFIG) diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index 30f3bc04..6a1b3350 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -1,7 +1,7 @@ set(TARGET_NAME svg2qvg) set(TARGET_SOURCES main.cpp) -qt_add_executable(${TARGET_NAME} ${TARGET_SOURCES}) +qsk_add_executable(${TARGET_NAME} ${TARGET_SOURCES}) if(BUILD_SVG2QVG_STANDALONE)