From a4e2f9f1daf01ffaa641e99678dcd065977e1d31 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Wed, 28 Sep 2022 23:49:30 +0200 Subject: [PATCH 01/77] initial commit with iot dashboard working --- CMakeLists.txt | 55 +++ examples/CMakeLists.txt | 20 ++ examples/boxes/CMakeLists.txt | 8 + examples/buttons/CMakeLists.txt | 5 + examples/desktop/CMakeLists.txt | 4 + examples/frames/CMakeLists.txt | 7 + examples/gallery/CMakeLists.txt | 50 +++ examples/glabels/CMakeLists.txt | 5 + examples/iotdashboard/CMakeLists.txt | 87 +++++ examples/layouts/CMakeLists.txt | 23 ++ examples/listbox/CMakeLists.txt | 4 + examples/messagebox/CMakeLists.txt | 4 + examples/messageboxQml/CMakeLists.txt | 8 + examples/mycontrols/CMakeLists.txt | 12 + examples/qvgviewer/CMakeLists.txt | 32 ++ examples/tabview/CMakeLists.txt | 12 + examples/thumbnails/CMakeLists.txt | 4 + features/qskconfig.cmake | 185 ++++++++++ inputcontext/CMakeLists.txt | 48 +++ playground/CMakeLists.txt | 16 + playground/anchors/CMakeLists.txt | 21 ++ playground/dialogbuttons/CMakeLists.txt | 8 + playground/dials/CMakeLists.txt | 17 + playground/grids/CMakeLists.txt | 27 ++ playground/images/CMakeLists.txt | 15 + playground/inputpanel/CMakeLists.txt | 4 + playground/invoker/CMakeLists.txt | 12 + playground/shadows/CMakeLists.txt | 8 + playground/webview/CMakeLists.txt | 5 + qmlexport/CMakeLists.txt | 31 ++ skins/CMakeLists.txt | 2 + skins/material3/CMakeLists.txt | 30 ++ skins/squiek/CMakeLists.txt | 32 ++ src/CMakeLists.txt | 447 ++++++++++++++++++++++++ support/CMakeLists.txt | 84 +++++ tools/CMakeLists.txt | 3 + tools/svg2qvg/CMakeLists.txt | 44 +++ 37 files changed, 1379 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 examples/CMakeLists.txt create mode 100644 examples/boxes/CMakeLists.txt create mode 100644 examples/buttons/CMakeLists.txt create mode 100644 examples/desktop/CMakeLists.txt create mode 100644 examples/frames/CMakeLists.txt create mode 100644 examples/gallery/CMakeLists.txt create mode 100644 examples/glabels/CMakeLists.txt create mode 100644 examples/iotdashboard/CMakeLists.txt create mode 100644 examples/layouts/CMakeLists.txt create mode 100644 examples/listbox/CMakeLists.txt create mode 100644 examples/messagebox/CMakeLists.txt create mode 100644 examples/messageboxQml/CMakeLists.txt create mode 100644 examples/mycontrols/CMakeLists.txt create mode 100644 examples/qvgviewer/CMakeLists.txt create mode 100644 examples/tabview/CMakeLists.txt create mode 100644 examples/thumbnails/CMakeLists.txt create mode 100644 features/qskconfig.cmake create mode 100644 inputcontext/CMakeLists.txt create mode 100644 playground/CMakeLists.txt create mode 100644 playground/anchors/CMakeLists.txt create mode 100644 playground/dialogbuttons/CMakeLists.txt create mode 100644 playground/dials/CMakeLists.txt create mode 100644 playground/grids/CMakeLists.txt create mode 100644 playground/images/CMakeLists.txt create mode 100644 playground/inputpanel/CMakeLists.txt create mode 100644 playground/invoker/CMakeLists.txt create mode 100644 playground/shadows/CMakeLists.txt create mode 100644 playground/webview/CMakeLists.txt create mode 100644 qmlexport/CMakeLists.txt create mode 100644 skins/CMakeLists.txt create mode 100644 skins/material3/CMakeLists.txt create mode 100644 skins/squiek/CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 support/CMakeLists.txt create mode 100644 tools/CMakeLists.txt create mode 100644 tools/svg2qvg/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..8d46ce21 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 3.20) + +project(qskinny) + +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + +set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5") # TODO +find_package(Qt5 REQUIRED COMPONENTS Core Gui Opengl Quick Quickwidgets Svg Webengine WebengineCore Widgets) + +message(STATUS "Qt5_VERSION : ${Qt5_VERSION}") +message(STATUS "Qt5_VERSION_MAJOR: ${Qt5_VERSION_MAJOR}") +message(STATUS "Qt5_VERSION_MINOR: ${Qt5_VERSION_MINOR}") +message(STATUS "Qt5_VERSION_PATCH: ${Qt5_VERSION_PATCH}") + +add_subdirectory(src) +add_subdirectory(skins) +#TODO +#add_subdirectory(inputcontext) +add_subdirectory(qmlexport) +add_subdirectory(tools) +add_subdirectory(support) +add_subdirectory(examples) +#add_subdirectory(playground) + +#TODO +#OTHER_FILES = +#doc / Doxyfile +#doc/*.dox +# doc/*.metadox +# doc/classes/*.dox +# doc/classes/*.metadox +# TODO + +# TODO +# qmlexport.depends = src +# inputcontext.depends = src +# skins.depends = src +# tools.depends = src +# support.depends = src skins +# examples.depends = tools support skins qmlexport +# playground.depends = tools support skins qmlexport diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 00000000..054308d7 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,20 @@ +#c++ +#add_subdirectory(desktop) +#add_subdirectory(gallery) +#add_subdirectory(layouts) +#add_subdirectory(listbox) +#add_subdirectory(messagebox) +#add_subdirectory(mycontrols) +#add_subdirectory(qvgviewer) +#add_subdirectory(thumbnails) +#add_subdirectory(tabview) +add_subdirectory(iotdashboard) + +#qml +#add_subdirectory(boxes) +#add_subdirectory(buttons) +#add_subdirectory(frames) +#add_subdirectory(glabels) +#add_subdirectory(messageboxQml) + +# TODO \ No newline at end of file diff --git a/examples/boxes/CMakeLists.txt b/examples/boxes/CMakeLists.txt new file mode 100644 index 00000000..a76dd06a --- /dev/null +++ b/examples/boxes/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + Box.h + +list(APPEND TARGET_SOURCES + Box.cpp + main.cpp diff --git a/examples/buttons/CMakeLists.txt b/examples/buttons/CMakeLists.txt new file mode 100644 index 00000000..6903a5ff --- /dev/null +++ b/examples/buttons/CMakeLists.txt @@ -0,0 +1,5 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES buttons.qrc) + + list(APPEND TARGET_SOURCES main.cpp) diff --git a/examples/desktop/CMakeLists.txt b/examples/desktop/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/desktop/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/frames/CMakeLists.txt b/examples/frames/CMakeLists.txt new file mode 100644 index 00000000..42a8aefa --- /dev/null +++ b/examples/frames/CMakeLists.txt @@ -0,0 +1,7 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES frames.qrc) + + list(APPEND TARGET_HEADERS Frame.h) + + list(APPEND TARGET_SOURCES Frame.cpp main.cpp) diff --git a/examples/gallery/CMakeLists.txt b/examples/gallery/CMakeLists.txt new file mode 100644 index 00000000..4177e9e1 --- /dev/null +++ b/examples/gallery/CMakeLists.txt @@ -0,0 +1,50 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + label/LabelPage.h + +list(APPEND TARGET_SOURCES + label/LabelPage.cpp + +list(APPEND TARGET_HEADERS + slider/SliderPage.h + +list(APPEND TARGET_SOURCES + slider/SliderPage.cpp + +list(APPEND TARGET_HEADERS + progressbar/ProgressBarPage.h + +list(APPEND TARGET_SOURCES + progressbar/ProgressBarPage.cpp + +list(APPEND TARGET_HEADERS + button/ButtonPage.h + +list(APPEND TARGET_SOURCES + button/ButtonPage.cpp + +list(APPEND TARGET_HEADERS + textinput/TextInputPage.h + +list(APPEND TARGET_SOURCES + textinput/TextInputPage.cpp + +list(APPEND TARGET_HEADERS + selector/SelectorPage.h + +list(APPEND TARGET_SOURCES + selector/SelectorPage.cpp + +list(APPEND TARGET_HEADERS + dialog/DialogPage.h + +list(APPEND TARGET_SOURCES + dialog/DialogPage.cpp + +list(APPEND TARGET_HEADERS + Page.h + +list(APPEND TARGET_SOURCES + Page.cpp + main.cpp diff --git a/examples/glabels/CMakeLists.txt b/examples/glabels/CMakeLists.txt new file mode 100644 index 00000000..778a252e --- /dev/null +++ b/examples/glabels/CMakeLists.txt @@ -0,0 +1,5 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES glabels.qrc) + + list(APPEND TARGET_SOURCES main.cpp) diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt new file mode 100644 index 00000000..017335ef --- /dev/null +++ b/examples/iotdashboard/CMakeLists.txt @@ -0,0 +1,87 @@ +list(APPEND TARGET_SOURCES + Box.cpp + BoxWithButtons.cpp + CircularProgressBar.cpp + CircularProgressBarSkinlet.cpp + DashboardPage.cpp + Diagram.cpp + DiagramSkinlet.cpp + GraphicProvider.cpp + GridBox.cpp + LightDisplaySkinlet.cpp + LightDisplay.cpp + MainItem.cpp + MenuBar.cpp + MyDevices.cpp + PieChart.cpp + PieChartPainted.cpp + PieChartSkinlet.cpp + RoomsPage.cpp + RoundedIcon.cpp + Skin.cpp + TopBar.cpp + RoundButton.cpp + UsageBox.cpp + UsageDiagram.cpp + MainWindow.cpp + main.cpp) + +list(APPEND TARGET_SOURCES + nodes/DiagramDataNode.cpp + nodes/DiagramSegmentsNode.cpp + nodes/RadialTickmarksNode.cpp) + +list(APPEND TARGET_HEADERS + Box.h + BoxWithButtons.h + CircularProgressBar.h + CircularProgressBarSkinlet.h + Diagram.h + DiagramSkinlet.h + GraphicProvider.h + GridBox.h + LightDisplaySkinlet.h + LightDisplay.h + DashboardPage.h + MainItem.h + MainWindow.h + MenuBar.h + MyDevices.h + PieChart.h + PieChartPainted.h + PieChartSkinlet.h + RoomsPage.h + RoundedIcon.h + Skin.h + TopBar.h + RoundButton.h + UsageBox.h + UsageDiagram.h) + +list(APPEND TARGET_HEADERS + nodes/DiagramDataNode.h + nodes/DiagramSegmentsNode.h + nodes/RadialTickmarksNode.h) + +list(APPEND TARGET_RESSOURCES + images.qrc + fonts.qrc) + +set(TARGET_NAME iotdashboard) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON + AUTORCC ON) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + Qt5::Svg) + +# TODO: examples should not use private headers +target_link_libraries(${TARGET_NAME} + PRIVATE + Qt5::QuickPrivate) # TODO why not transive by qskinny target \ No newline at end of file diff --git a/examples/layouts/CMakeLists.txt b/examples/layouts/CMakeLists.txt new file mode 100644 index 00000000..1a57b07a --- /dev/null +++ b/examples/layouts/CMakeLists.txt @@ -0,0 +1,23 @@ +CONFIG += qskexample qskqmlexport + +list(APPEND TARGET_RESSOURCES + layouts.qrc + +list(APPEND TARGET_HEADERS + TestRectangle.h + ButtonBox.h + FlowLayoutPage.h + GridLayoutPage.h + LinearLayoutPage.h + DynamicConstraintsPage.h + StackLayoutPage.h + +list(APPEND TARGET_SOURCES + TestRectangle.cpp + ButtonBox.cpp + FlowLayoutPage.cpp + GridLayoutPage.cpp + LinearLayoutPage.cpp + DynamicConstraintsPage.cpp + StackLayoutPage.cpp + main.cpp diff --git a/examples/listbox/CMakeLists.txt b/examples/listbox/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/listbox/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/messagebox/CMakeLists.txt b/examples/messagebox/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/messagebox/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/messageboxQml/CMakeLists.txt b/examples/messageboxQml/CMakeLists.txt new file mode 100644 index 00000000..b8d1d692 --- /dev/null +++ b/examples/messageboxQml/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample +CONFIG += qskqmlexport + +list(APPEND TARGET_RESSOURCES + messagebox.qrc + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/examples/mycontrols/CMakeLists.txt b/examples/mycontrols/CMakeLists.txt new file mode 100644 index 00000000..e8931b22 --- /dev/null +++ b/examples/mycontrols/CMakeLists.txt @@ -0,0 +1,12 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + MySkin.cpp + MyToggleButton.cpp + MyToggleButtonSkinlet.cpp + main.cpp + +list(APPEND TARGET_HEADERS + MyToggleButton.h + MyToggleButtonSkinlet.h + MySkin.h diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt new file mode 100644 index 00000000..54aea663 --- /dev/null +++ b/examples/qvgviewer/CMakeLists.txt @@ -0,0 +1,32 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + MainWindow.h + +list(APPEND TARGET_SOURCES + MainWindow.cpp + main.cpp + +#CONFIG += autoqvg + +autoqvg { + CONFIG += qskqvg + + QVGlist(APPEND TARGET_RESSOURCES + qvgviewer.qrc + + SVGSOURCES = + svg/01.01.10.svg + svg/01.03.04q.svg + svg/01.08.05q.svg + svg/01.25.18.svg + +} else { + +#When cross compiling we need to have the svg2qvg tool being +#compiled for the build environment - not for the one of the target. +#So we better have precompiled qvg files in the repository to +#make the build process much easier + list(APPEND TARGET_RESSOURCES + qvgviewer.qrc +} diff --git a/examples/tabview/CMakeLists.txt b/examples/tabview/CMakeLists.txt new file mode 100644 index 00000000..eb86cab2 --- /dev/null +++ b/examples/tabview/CMakeLists.txt @@ -0,0 +1,12 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + CustomSlider.h + CustomSliderSkinlet.h + OtherSlider.h + +list(APPEND TARGET_SOURCES + CustomSlider.cpp + CustomSliderSkinlet.cpp + OtherSlider.cpp + main.cpp diff --git a/examples/thumbnails/CMakeLists.txt b/examples/thumbnails/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/examples/thumbnails/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake new file mode 100644 index 00000000..6d438310 --- /dev/null +++ b/features/qskconfig.cmake @@ -0,0 +1,185 @@ +############################################################################ +# QSkinny - Copyright (C) 2016 Uwe Rathmann +# This file may be used under the terms of the QSkinny License, Version 1.0 +############################################################################ + +set(QSK_VER_MAJ 0) +set(QSK_VER_MIN 0) +set(QSK_VER_PAT 0) +set(QSK_VERSION ${QSK_VER_MAJ}.${QSK_VER_MIN}.${QSK_VER_PAT}) + +# trying the PREFIX environment variable first +set(QSK_INSTALL_PREFIX = $ENV{PREFIX}) # TODO still required? + +if("${QSK_INSTALL_PREFIX}" STREQUAL "") + set(QSK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") # TODO where does QT_INSTALL_PREFIX come from? + + if (UNIX) + set(QSK_INSTALL_PREFIX /usr/local/qskinny-${QSK_VERSION}) + endif() + + if (MSVC) + set(QSK_INSTALL_PREFIX C:/Qskinny-${QSK_VERSION}) + endif() +endif() + +set(QSK_INSTALL_DOCS doc) +set(QSK_INSTALL_HEADERS include) +set(QSK_INSTALL_LIBS lib) +set(QSK_INSTALL_BINS bin) +set(QSK_INSTALL_PLUGINS plugins) +set(QSK_INSTALL_EXAMPLES examples) + +# TODO find compiler flag equivalent +list(APPEND CONFIG no_private_qt_headers_warning) +list(APPEND CONFIG warn_on) +list(APPEND CONFIG no_keywords) +list(APPEND CONFIG silent) +#list(APPEND CONFIG -= depend_includepath) # TODO was -= +list(APPEND CONFIG strict_c++) +list(APPEND CONFIG c++11) +list(APPEND CONFIG pedantic) +list(APPEND CONFIG hide_symbols) +#list(APPEND CONFIG += debug) +#list(APPEND CONFIG += sanitize) + +# TODO +# use_no_rpath { +# CONFIG -= use_local_rpath use_install_rpath +# } else { +# cross_compile { +# CONFIG *= use_install_rpath +# QMAKE_RPATHLINKDIR *= $${QSK_PLUGIN_DIR}/skins +# } else { +# !use_install_rpath: CONFIG *= use_local_rpath +# } +# } + +set(MOC_DIR moc) +set(OBJECTS_DIR obj) +set(RCC_DIR rcc) + +list(APPEND QSK_CONFIG QskDll) + +option(QskDll "build qskinny as shared library" ON) + +if(UNIX AND NOT APPLE) + set(LINUX TRUE) +endif() + +if(LINUX) + + if ("pedantic" IN_LIST CONFIG) + + add_compile_definitions(QT_STRICT_ITERATORS) + + # Qt headers do not stand pedantic checks, so it's better + # to exclude them by declaring them as system includes + + list(APPEND CONFIG qtassysteminclude) + endif() + + if ("qtassysteminclude" IN_LIST CONFIG) + + # As most distros set QT_INSTALL_HEADERS to /usr/include we + # would run into gcc compiler errors and better drop it + # from the list below. Should be no problem as we don't + # add the Qt module to our includes and therefore don't + # need this path. + + # TODO + # QMAKE_CXXFLAGS += \ + # -isystem $$[QT_INSTALL_HEADERS]/QtCore \ + # -isystem $$[QT_INSTALL_HEADERS]/QtCore/$$[QT_VERSION]/QtCore \ + # -isystem $$[QT_INSTALL_HEADERS]/QtGui \ + # -isystem $$[QT_INSTALL_HEADERS]/QtGui/$$[QT_VERSION]/QtGui \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQuick \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQuick/$$[QT_VERSION]/QtQuick \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQml \ + # -isystem $$[QT_INSTALL_HEADERS]/QtQml/$$[QT_VERSION]/QtQml \ + endif() +endif() + +if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64") + # --- optional optimzations + if (CMAKE_BUILD_TYPE EQUAL "Debug") + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O0) # TODO check if still required + else() + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O3 -ffast-math) # TODO check if still required + endif() +endif() + +if ("pedantic" IN_LIST CONFIG) + if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64") + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -pedantic-errors) + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wextra) + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Werror=format-security) + #QMAKE_CXXFLAGS *= -Wlogical-op + + # QMAKE_CXXFLAGS *= -Wconversion + # QMAKE_CXXFLAGS *= -Wfloat-equal + # QMAKE_CXXFLAGS *= -Wshadow + + set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wsuggest-override) + # QMAKE_CXXFLAGS *= -Wsuggest-final-types + # QMAKE_CXXFLAGS *= -Wsuggest-final-methods + + # QMAKE_CXXFLAGS *= -fanalyzer + endif() + + if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-clang") + + #QMAKE_CXXFLAGS *= -pedantic-errors + + #QMAKE_CXXFLAGS *= -Weverything + #QMAKE_CXXFLAGS *= -Wno-c++98-compat-pedantic + #QMAKE_CXXFLAGS *= -Wno-global-constructors + #QMAKE_CXXFLAGS *= -Wno-exit-time-destructors + #QMAKE_CXXFLAGS *= -Wno-padded + #QMAKE_CXXFLAGS *= -Wno-float-equal + #QMAKE_CXXFLAGS *= -Wno-undefined-reinterpret-cast + #QMAKE_CXXFLAGS *= -Wno-deprecated + #QMAKE_CXXFLAGS *= -Wno-switch-enum + #QMAKE_CXXFLAGS *= -Wno-keyword-macro + #QMAKE_CXXFLAGS *= -Wno-old-style-cast + #QMAKE_CXXFLAGS *= -Wno-used-but-marked-unused + #QMAKE_CXXFLAGS *= -Wno-weak-vtables + #QMAKE_CXXFLAGS *= -Wno-shadow + #QMAKE_CXXFLAGS *= -Wno-double-promotion + #QMAKE_CXXFLAGS *= -Wno-conversion + #QMAKE_CXXFLAGS *= -Wno-documentation-unknown-command + #QMAKE_CXXFLAGS *= -Wno-unused-macros + endif() +endif() + +if ("sanitize" IN_LIST CONFIG) + + list(APPEND CONFIG sanitizer) + list(APPEND CONFIG sanitize_address) + # CONFIG *= sanitize_undefined + + if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64") + #QMAKE_CXXFLAGS *= -fsanitize-address-use-after-scope + #QMAKE_LFLAGS *= -fsanitize-address-use-after-scope + endif() +endif() + +if (CMAKE_BUILD_TYPE EQUAL "Debug") + add_compile_definitions(ITEM_STATISTICS=1) +endif() + +# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x000000 + +set(LOCAL_PRI $ENV{QSK_LOCAL_PRI}) + +if (${LOCAL_PRI}) # TODO not empty check + + if(EXISTS ${LOCAL_PRI}) + + # When not working with the Qt/Creator it is often more convenient + # to include the specific options of your local build, than passing + # them all on the command line + + include(${LOCAL_PRI}) + endif() +endif() \ No newline at end of file diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt new file mode 100644 index 00000000..a694dffa --- /dev/null +++ b/inputcontext/CMakeLists.txt @@ -0,0 +1,48 @@ +set(TARGET_NAME qskinputcontext) + +target_link_libraries(${TARGET_NAME} PRIVATE gui-private) + +# TODO +# CONFIG += plugin +# CONFIG += qskinny + +if(QskDll) + target_compile_definitions(${TARGET_NAME} PRIVATE QSK_INPUTCONTEXT_MAKEDLL) +endif() + +list(APPEND TARGET_HEADERS + QskInputContextGlobal.h) + +list(APPEND TARGET_SOURCES + QskInputContextPlugin.cpp) + +list(APPEND TARGET_OTHER_FILES + metadata.json) + +# TODO +# pinyin { +# unix +# { +# CONFIG += link_pkgconfig PKGCONFIG += pinyin +# +# HEADERS += QskPinyinTextPredictor.h +# +# SOURCES += QskPinyinTextPredictor.cpp +# } +# } +# +# hunspell { +# unix +# { +# CONFIG += link_pkgconfig PKGCONFIG += hunspell +# +# HEADERS += QskHunspellTextPredictor.h +# +# SOURCES += QskHunspellTextPredictor.cpp +# } +# +# } + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/platforminputcontexts) \ No newline at end of file diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt new file mode 100644 index 00000000..71b0dc26 --- /dev/null +++ b/playground/CMakeLists.txt @@ -0,0 +1,16 @@ +TEMPLATE = subdirs + + SUBDIRS += anchors dials dialogbuttons invoker inputpanel images + + SUBDIRS += + shadows + + qtHaveModule(webengine){ + + SUBDIRS += webview + } + +qtHaveModule(quickwidgets) +{ + SUBDIRS += grids +} diff --git a/playground/anchors/CMakeLists.txt b/playground/anchors/CMakeLists.txt new file mode 100644 index 00000000..10af3778 --- /dev/null +++ b/playground/anchors/CMakeLists.txt @@ -0,0 +1,21 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + kiwi/Constraint.h + kiwi/Expression.h + kiwi/Solver.h + kiwi/Strength.h + kiwi/Term.h + kiwi/Variable.h + +list(APPEND TARGET_SOURCES + kiwi/Expression.cpp + kiwi/Constraint.cpp + kiwi/Solver.cpp + +list(APPEND TARGET_HEADERS + AnchorBox.h + +list(APPEND TARGET_SOURCES + AnchorBox.cpp + main.cpp diff --git a/playground/dialogbuttons/CMakeLists.txt b/playground/dialogbuttons/CMakeLists.txt new file mode 100644 index 00000000..7b96337a --- /dev/null +++ b/playground/dialogbuttons/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + Window.h + +list(APPEND TARGET_SOURCES + Window.cpp + main.cpp diff --git a/playground/dials/CMakeLists.txt b/playground/dials/CMakeLists.txt new file mode 100644 index 00000000..be7505a2 --- /dev/null +++ b/playground/dials/CMakeLists.txt @@ -0,0 +1,17 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + SkinFactory.h + Dial.h + DialSkinlet.h + Dashboard.h + +list(APPEND TARGET_SOURCES + SkinFactory.cpp + Dial.cpp + DialSkinlet.cpp + Dashboard.cpp + main.cpp + +list(APPEND TARGET_RESSOURCES + images.qrc diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt new file mode 100644 index 00000000..52dcff88 --- /dev/null +++ b/playground/grids/CMakeLists.txt @@ -0,0 +1,27 @@ +CONFIG += qskexample +target_link_libraries(${TARGET_NAME} PRIVATE widgets quickwidgets) + +list(APPEND TARGET_HEADERS + GridAccessor.h + GridSkinny.h + GridWidgets.h + GridGraphics.h + GridQuick.h + TestBox.h + +list(APPEND TARGET_SOURCES + GridAccessor.cpp + GridSkinny.cpp + GridWidgets.cpp + GridGraphics.cpp + GridQuick.cpp + TestBox.cpp + main.cpp + +linux { + pedantic + { + QMAKE_CXXFLAGS += -isystem $$[ QT_INSTALL_HEADERS ] / QtQuickWidgets QMAKE_CXXFLAGS += + -isystem $$[ QT_INSTALL_HEADERS ] / QtWidgets + } +} diff --git a/playground/images/CMakeLists.txt b/playground/images/CMakeLists.txt new file mode 100644 index 00000000..771aff5c --- /dev/null +++ b/playground/images/CMakeLists.txt @@ -0,0 +1,15 @@ +CONFIG += qskexample qskqmlexport + +target_link_libraries(${TARGET_NAME} + PRIVATE + Qt5::QuickPrivate) + +list(APPEND TARGET_RESSOURCES + images.qrc + +list(APPEND TARGET_HEADERS + Image.h + +list(APPEND TARGET_SOURCES + Image.cpp + main.cpp diff --git a/playground/inputpanel/CMakeLists.txt b/playground/inputpanel/CMakeLists.txt new file mode 100644 index 00000000..8b2cd0e3 --- /dev/null +++ b/playground/inputpanel/CMakeLists.txt @@ -0,0 +1,4 @@ +CONFIG += qskexample + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/playground/invoker/CMakeLists.txt b/playground/invoker/CMakeLists.txt new file mode 100644 index 00000000..cc6566c3 --- /dev/null +++ b/playground/invoker/CMakeLists.txt @@ -0,0 +1,12 @@ +CONFIG += qskexample + +QMAKE_MOC_OPTIONS += -nw # disable warning about missing READ + +list(APPEND TARGET_HEADERS + Callback.h + Invoker.h + +list(APPEND TARGET_SOURCES + Callback.cpp + Invoker.cpp + main.cpp diff --git a/playground/shadows/CMakeLists.txt b/playground/shadows/CMakeLists.txt new file mode 100644 index 00000000..00b2b539 --- /dev/null +++ b/playground/shadows/CMakeLists.txt @@ -0,0 +1,8 @@ +CONFIG += qskexample + +list(APPEND TARGET_HEADERS + ShadowedBox.h + +list(APPEND TARGET_SOURCES + ShadowedBox.cpp + main.cpp diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt new file mode 100644 index 00000000..b14cbb64 --- /dev/null +++ b/playground/webview/CMakeLists.txt @@ -0,0 +1,5 @@ +CONFIG += qskexample +target_link_libraries(${TARGET_NAME} PRIVATE webengine webengine-private webenginecore-private core-private) + +list(APPEND TARGET_SOURCES + main.cpp diff --git a/qmlexport/CMakeLists.txt b/qmlexport/CMakeLists.txt new file mode 100644 index 00000000..6e2a2768 --- /dev/null +++ b/qmlexport/CMakeLists.txt @@ -0,0 +1,31 @@ +set(TARGET_NAME qskqmlexport) + +list(APPEND TARGET_HEADERS + QskQmlGlobal.h + QskShortcutQml.h + QskLayoutQml.h + QskMainQml.h + QskQml.h) + +list(APPEND TARGET_SOURCES + QskShortcutQml.cpp + QskLayoutQml.cpp + QskMainQml.cpp + QskQml.cpp) + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny) + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_QML_MAKEDLL) +endif() + +install(TARGETS ${TARGET_NAME} DESTINATION qmlexport) \ No newline at end of file diff --git a/skins/CMakeLists.txt b/skins/CMakeLists.txt new file mode 100644 index 00000000..37ca7925 --- /dev/null +++ b/skins/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(squiek) +add_subdirectory(material3) \ No newline at end of file diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt new file mode 100644 index 00000000..3ce28bc9 --- /dev/null +++ b/skins/material3/CMakeLists.txt @@ -0,0 +1,30 @@ +set(QSK_PLUGIN_SUBDIR skins) + +set(TARGET_NAME material3skin) + +list(APPEND TARGET_HEADERS + QskMaterial3Global.h + QskMaterial3Skin.h + QskMaterial3SkinFactory.h) + +list(APPEND TARGET_SOURCES + QskMaterial3Skin.cpp + QskMaterial3SkinFactory.cpp) + +list(APPEND TARGET_OTHER_FILES + metadata.json) + +add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + +target_link_libraries(${TARGET_NAME} PRIVATE qskinny) + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_MATERIAL3_MAKEDLL) +endif() + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt new file mode 100644 index 00000000..17457c7a --- /dev/null +++ b/skins/squiek/CMakeLists.txt @@ -0,0 +1,32 @@ +set(QSK_PLUGIN_SUBDIR skins) + +set(TARGET_NAME squiekskin) + +list(APPEND TARGET_HEADERS + QskSquiekGlobal.h + QskSquiekSkin.h + QskSquiekSkinFactory.h) + +list(APPEND TARGET_SOURCES + QskSquiekSkin.cpp + QskSquiekSkinFactory.cpp) + +list(APPEND TARGET_OTHER_FILES + metadata.json) + +add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny) + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_SQUIEK_MAKEDLL) +endif() + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..06aa6c7a --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,447 @@ +include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) + +#TODO +#QSK_SUBDIRS = common graphic nodes controls layouts dialogs inputpanel +#INCLUDEPATH *= $${QSK_SUBDIRS} +#DEPENDPATH *= $${QSK_SUBDIRS} + +#CONFIG += pinyin +#CONFIG += hunspell + +list(APPEND TARGET_HEADERS + common/QskArcMetrics.h + common/QskAspect.h + common/QskBoxBorderColors.h + common/QskBoxBorderMetrics.h + common/QskBoxShapeMetrics.h + common/QskBoxHints.h + common/QskFunctions.h + common/QskGlobal.h + common/QskGradient.h + common/QskGradientStop.h + common/QskHctColor.h + common/QskIntervalF.h + common/QskMargins.h + common/QskMetaFunction.h + common/QskMetaFunction.hpp + common/QskMetaInvokable.h + common/QskNamespace.h + common/QskObjectCounter.h + common/QskPlacementPolicy.h + common/QskPlatform.h + common/QskRgbValue.h + common/QskScaleEngine.h + common/QskScaleTickmarks.h + common/QskShadowMetrics.h + common/QskSizePolicy.h + common/QskStateCombination.h + common/QskTextColors.h + common/QskTextOptions.h) + +list(APPEND TARGET_SOURCES + common/QskArcMetrics.cpp + common/QskAspect.cpp + common/QskBoxBorderColors.cpp + common/QskBoxBorderMetrics.cpp + common/QskBoxShapeMetrics.cpp + common/QskBoxHints.cpp + common/QskFunctions.cpp + common/QskGradient.cpp + common/QskGradientStop.cpp + common/QskHctColor.cpp + common/QskIntervalF.cpp + common/QskMargins.cpp + common/QskMetaFunction.cpp + common/QskMetaInvokable.cpp + common/QskObjectCounter.cpp + common/QskPlatform.cpp + common/QskPlacementPolicy.cpp + common/QskRgbValue.cpp + common/QskScaleEngine.cpp + common/QskScaleTickmarks.cpp + common/QskShadowMetrics.cpp + common/QskSizePolicy.cpp + common/QskTextColors.cpp + common/QskTextOptions.cpp) + +list(APPEND TARGET_HEADERS #TODO why separate + graphic/QskColorFilter.h + graphic/QskGraphic.h + graphic/QskGraphicImageProvider.h + graphic/QskGraphicIO.h + graphic/QskGraphicPaintEngine.h + graphic/QskGraphicProvider.h + graphic/QskGraphicProviderMap.h + graphic/QskGraphicTextureFactory.h + graphic/QskPainterCommand.h + graphic/QskStandardSymbol.h) + +list(APPEND TARGET_SOURCES + graphic/QskColorFilter.cpp + graphic/QskGraphic.cpp + graphic/QskGraphicImageProvider.cpp + graphic/QskGraphicIO.cpp + graphic/QskGraphicPaintEngine.cpp + graphic/QskGraphicProvider.cpp + graphic/QskGraphicProviderMap.cpp + graphic/QskGraphicTextureFactory.cpp + graphic/QskPainterCommand.cpp + graphic/QskStandardSymbol.cpp) + +list(APPEND TARGET_HEADERS + nodes/QskArcNode.h + nodes/QskArcRenderer.h + nodes/QskBoxNode.h + nodes/QskBoxClipNode.h + nodes/QskBoxRenderer.h + nodes/QskBoxRendererColorMap.h + nodes/QskBoxShadowNode.h + nodes/QskGraphicNode.h + nodes/QskPaintedNode.h + nodes/QskPlainTextRenderer.h + nodes/QskRichTextRenderer.h + nodes/QskScaleRenderer.h + nodes/QskSGNode.h + nodes/QskShadedBoxNode.h + nodes/QskTextNode.h + nodes/QskTextRenderer.h + nodes/QskTextureRenderer.h + nodes/QskTickmarksNode.h + nodes/QskVertex.h) + +list(APPEND TARGET_SOURCES + nodes/QskArcNode.cpp + nodes/QskArcRenderer.cpp + nodes/QskBoxNode.cpp + nodes/QskBoxClipNode.cpp + nodes/QskBoxRendererRect.cpp + nodes/QskBoxRendererEllipse.cpp + nodes/QskBoxRendererDEllipse.cpp + nodes/QskBoxShadowNode.cpp + nodes/QskGraphicNode.cpp + nodes/QskPaintedNode.cpp + nodes/QskPlainTextRenderer.cpp + nodes/QskRichTextRenderer.cpp + nodes/QskScaleRenderer.cpp + nodes/QskSGNode.cpp + nodes/QskShadedBoxNode.cpp + nodes/QskTextNode.cpp + nodes/QskTextRenderer.cpp + nodes/QskTextureRenderer.cpp + nodes/QskTickmarksNode.cpp + nodes/QskVertex.cpp) + +list(APPEND TARGET_RESSOURCES + nodes/shaders.qrc) + +list(APPEND TARGET_HEADERS + controls/QskAbstractButton.h + controls/QskAnimationHint.h + controls/QskAnimator.h + controls/QskApplicationView.h + controls/QskBoundedControl.h + controls/QskBoundedInput.h + controls/QskBoundedRangeInput.h + controls/QskBoundedValueInput.h + controls/QskBox.h + controls/QskBoxSkinlet.h + controls/QskCheckBox.h + controls/QskCheckBoxSkinlet.h + controls/QskControl.h + controls/QskControlPrivate.h + controls/QskDirtyItemFilter.h + controls/QskEvent.h + controls/QskFlickAnimator.h + controls/QskFocusIndicator.h + controls/QskFocusIndicatorSkinlet.h + controls/QskGesture.h + controls/QskGestureRecognizer.h + controls/QskGraphicLabel.h + controls/QskGraphicLabelSkinlet.h + controls/QskHintAnimator.h + controls/QskInputGrabber.h + controls/QskListView.h + controls/QskListViewSkinlet.h + controls/QskMenu.h + controls/QskMenuSkinlet.h + controls/QskObjectTree.h + controls/QskPageIndicator.h + controls/QskPageIndicatorSkinlet.h + controls/QskPanGestureRecognizer.h + controls/QskPopup.h + controls/QskPopupSkinlet.h + controls/QskPushButton.h + controls/QskPushButtonSkinlet.h + controls/QskProgressBar.h + controls/QskProgressBarSkinlet.h + controls/QskQuick.h + controls/QskQuickItem.h + controls/QskQuickItemPrivate.h + controls/QskScrollArea.h + controls/QskScrollBox.h + controls/QskScrollView.h + controls/QskScrollViewSkinlet.h + controls/QskSegmentedBar.h + controls/QskSegmentedBarSkinlet.h + controls/QskSeparator.h + controls/QskSeparatorSkinlet.h + controls/QskSetup.h + controls/QskShortcutMap.h + controls/QskSimpleListBox.h + controls/QskSkin.h + controls/QskSkinFactory.h + controls/QskSkinHintTable.h + controls/QskSkinHintTableEditor.h + controls/QskSkinManager.h + controls/QskSkinStateChanger.h + controls/QskSkinTransition.h + controls/QskSkinlet.h + controls/QskSkinnable.h + controls/QskSlider.h + controls/QskSliderSkinlet.h + controls/QskStatusIndicator.h + controls/QskStatusIndicatorSkinlet.h + controls/QskSubWindowArea.h + controls/QskSubWindowAreaSkinlet.h + controls/QskSubWindow.h + controls/QskSubWindowSkinlet.h + controls/QskSwitchButton.h + controls/QskSwitchButtonSkinlet.h + controls/QskTabBar.h + controls/QskTabButton.h + controls/QskTabButtonSkinlet.h + controls/QskTabView.h + controls/QskTabViewSkinlet.h + controls/QskTextInput.h + controls/QskTextInputSkinlet.h + controls/QskTextLabel.h + controls/QskTextLabelSkinlet.h + controls/QskVariantAnimator.h + controls/QskWindow.h) + +list(APPEND TARGET_SOURCES + controls/QskAbstractButton.cpp + controls/QskAnimator.cpp + controls/QskAnimationHint.cpp + controls/QskApplicationView.cpp + controls/QskBoundedControl.cpp + controls/QskBoundedInput.cpp + controls/QskBoundedRangeInput.cpp + controls/QskBoundedValueInput.cpp + controls/QskBox.cpp + controls/QskBoxSkinlet.cpp + controls/QskCheckBox.cpp + controls/QskCheckBoxSkinlet.cpp + controls/QskControl.cpp + controls/QskControlPrivate.cpp + controls/QskDirtyItemFilter.cpp + controls/QskEvent.cpp + controls/QskFlickAnimator.cpp + controls/QskFocusIndicator.cpp + controls/QskFocusIndicatorSkinlet.cpp + controls/QskGesture.cpp + controls/QskGestureRecognizer.cpp + controls/QskGraphicLabel.cpp + controls/QskGraphicLabelSkinlet.cpp + controls/QskHintAnimator.cpp + controls/QskInputGrabber.cpp + controls/QskListView.cpp + controls/QskListViewSkinlet.cpp + controls/QskMenuSkinlet.cpp + controls/QskMenu.cpp + controls/QskObjectTree.cpp + controls/QskPageIndicator.cpp + controls/QskPageIndicatorSkinlet.cpp + controls/QskPanGestureRecognizer.cpp + controls/QskPopup.cpp + controls/QskPopupSkinlet.cpp + controls/QskPushButton.cpp + controls/QskPushButtonSkinlet.cpp + controls/QskProgressBar.cpp + controls/QskProgressBarSkinlet.cpp + controls/QskQuick.cpp + controls/QskQuickItem.cpp + controls/QskQuickItemPrivate.cpp + controls/QskScrollArea.cpp + controls/QskScrollBox.cpp + controls/QskScrollView.cpp + controls/QskScrollViewSkinlet.cpp + controls/QskSegmentedBar.cpp + controls/QskSegmentedBarSkinlet.cpp + controls/QskSeparator.cpp + controls/QskSeparatorSkinlet.cpp + controls/QskSetup.cpp + controls/QskShortcutMap.cpp + controls/QskSimpleListBox.cpp + controls/QskSkin.cpp + controls/QskSkinHintTable.cpp + controls/QskSkinHintTableEditor.cpp + controls/QskSkinFactory.cpp + controls/QskSkinManager.cpp + controls/QskSkinTransition.cpp + controls/QskSkinlet.cpp + controls/QskSkinnable.cpp + controls/QskSlider.cpp + controls/QskSliderSkinlet.cpp + controls/QskStatusIndicator.cpp + controls/QskStatusIndicatorSkinlet.cpp + controls/QskSubWindowArea.cpp + controls/QskSubWindowAreaSkinlet.cpp + controls/QskSubWindow.cpp + controls/QskSubWindowSkinlet.cpp + controls/QskSwitchButton.cpp + controls/QskSwitchButtonSkinlet.cpp + controls/QskTabBar.cpp + controls/QskTabButton.cpp + controls/QskTabButtonSkinlet.cpp + controls/QskTabView.cpp + controls/QskTabViewSkinlet.cpp + controls/QskTextInput.cpp + controls/QskTextInputSkinlet.cpp + controls/QskTextLabel.cpp + controls/QskTextLabelSkinlet.cpp + controls/QskVariantAnimator.cpp + controls/QskWindow.cpp) + +list(APPEND TARGET_HEADERS + layouts/QskGridBox.h + layouts/QskGridLayoutEngine.h + layouts/QskIndexedLayoutBox.h + layouts/QskLayoutChain.h + layouts/QskLayoutEngine2D.h + layouts/QskLayoutElement.h + layouts/QskLayoutMetrics.h + layouts/QskLinearBox.h + layouts/QskLinearLayoutEngine.h + layouts/QskStackBoxAnimator.h + layouts/QskStackBox.h + layouts/QskSubcontrolLayoutEngine.h) + +list(APPEND TARGET_SOURCES + layouts/QskGridBox.cpp + layouts/QskGridLayoutEngine.cpp + layouts/QskIndexedLayoutBox.cpp + layouts/QskLayoutChain.cpp + layouts/QskLayoutEngine2D.cpp + layouts/QskLayoutElement.cpp + layouts/QskLayoutMetrics.cpp + layouts/QskLinearBox.cpp + layouts/QskLinearLayoutEngine.cpp + layouts/QskStackBoxAnimator.cpp + layouts/QskStackBox.cpp + layouts/QskSubcontrolLayoutEngine.cpp) + +list(APPEND TARGET_HEADERS + dialogs/QskDialog.h + dialogs/QskDialogButton.h + dialogs/QskDialogButtonBox.h + dialogs/QskDialogSubWindow.h + dialogs/QskDialogWindow.h + dialogs/QskMessageSubWindow.h + dialogs/QskMessageWindow.h + dialogs/QskSelectionSubWindow.h + dialogs/QskSelectionWindow.h) + +list(APPEND TARGET_SOURCES + dialogs/QskDialogButton.cpp + dialogs/QskDialogButtonBox.cpp + dialogs/QskDialog.cpp + dialogs/QskDialogSubWindow.cpp + dialogs/QskDialogWindow.cpp + dialogs/QskMessageSubWindow.cpp + dialogs/QskMessageWindow.cpp + dialogs/QskSelectionSubWindow.cpp + dialogs/QskSelectionWindow.cpp) + +list(APPEND TARGET_HEADERS + inputpanel/QskTextPredictor.h + inputpanel/QskInputContext.h + inputpanel/QskInputPanel.h + inputpanel/QskInputPanelBox.h + inputpanel/QskInputPredictionBar.h + inputpanel/QskVirtualKeyboard.h) + +list(APPEND TARGET_SOURCES + inputpanel/QskTextPredictor.cpp + inputpanel/QskInputContext.cpp + inputpanel/QskInputPanel.cpp + inputpanel/QskInputPanelBox.cpp + inputpanel/QskInputPredictionBar.cpp + inputpanel/QskVirtualKeyboard.cpp) + +#TODO +#pinyin { +# +#unix { +# +#target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) +# +#CONFIG += link_pkgconfig +#PKGCONFIG += pinyin +# +#HEADERS += +#inputpanel/QskPinyinTextPredictor.h +# +#SOURCES += +#inputpanel/QskPinyinTextPredictor.cpp +#} +#} + +#TODO +#hunspell { +# +#unix { +# +#target_compile_definitions(${TARGET_NAME} PRIVATE HUNSPELL) +# +#CONFIG += link_pkgconfig +#PKGCONFIG += hunspell +# +#HEADERS += +#inputpanel/QskHunspellTextPredictor.h +# +#SOURCES += +#inputpanel/QskHunspellTextPredictor.cpp +#} +#} + +set(TARGET_NAME qskinny) + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +if (Qt5_VERSION_MAJOR VERSION_GREATER "5") + target_link_libraries(${TARGET_NAME} PRIVATE Qt5::Opengl) +endif() + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PUBLIC + QSK_DLL + PRIVATE + QSK_MAKEDLL) +endif() + +target_include_directories(${TARGET_NAME} + PUBLIC + common + graphic + nodes + controls + layouts + dialogs + inputpanel) + +target_link_libraries(${TARGET_NAME} + PUBLIC + Qt5::Core + Qt5::CorePrivate + Qt5::Quick + Qt5::QuickPrivate) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS}) +install(FILES ${TARGET_HEADERS} DESTINATION ${QSK_INSTALL_HEADERS}) \ No newline at end of file diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt new file mode 100644 index 00000000..39bf365a --- /dev/null +++ b/support/CMakeLists.txt @@ -0,0 +1,84 @@ +# TODO +# CONFIG += ensure_skins +# CONFIG += fontconfig +# CONFIG += qskinny + +list(APPEND TARGET_HEADERS + SkinnyGlobal.h + SkinnyNamespace.h + SkinnyShapeFactory.h + SkinnyShapeProvider.h + SkinnyShortcut.h) + +list(APPEND TARGET_SOURCES + SkinnyNamespace.cpp + SkinnyShapeFactory.cpp + SkinnyShapeProvider.cpp + SkinnyShortcut.cpp) + +# TODO +# ensure_skins{ +# +# #Enabling fall back code, that inserts some skin factories manually +# #when not finding skin factories as plugins +# +# INCLUDEPATH *= $${QSK_ROOT} / skins DEPENDPATH *= +# $${QSK_ROOT} / +# skins +# +# target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR} / skins) +# +# target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) +# +# use_install_rpath : QMAKE_RPATHDIR *= +# $${QSK_INSTALL_PLUGINS} / skins use_local_rpath : QMAKE_RPATHDIR *= +# $${QSK_PLUGIN_DIR} / skins +# +# qskAddLibrary($${QSK_PLUGIN_DIR} / skins, squiekskin) +# qskAddLibrary($${QSK_PLUGIN_DIR} / skins, material3skin) +# } + +# TODO +#fontconfig{ +# +# QSK_FONTDIR = $${PWD} / fonts QSK_FONTCACHEDIR = +# $${OUT_PWD} / fontconfig QSK_FONTCONF_FILE = +# $${QSK_FONTCACHEDIR} / fonts.conf +# +# QSK_FONTCONF_DATA = +# "$$cat($${PWD}/fonts.conf.in, false)" QSK_FONTCONF_DATA = $$replace( +# QSK_FONTCONF_DATA, FONTCACHEDIR, $${QSK_FONTCACHEDIR}) +# QSK_FONTCONF_DATA = $$replace( +# QSK_FONTCONF_DATA, FONTDIR, $${QSK_FONTDIR}) +# write_file($${QSK_FONTCONF_FILE}, QSK_FONTCONF_DATA) +# +# DEFINES += +# FONTCONFIG_FILE = $$clean_path($$QSK_FONTCONF_FILE) +#} + +set(TARGET_NAME qsktestsupport) + +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny) + +if (QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + SKINNY_MAKEDLL) +endif() + +target_compile_definitions(${TARGET_NAME} + PRIVATE + PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) + +target_include_directories(${TARGET_NAME} + PUBLIC + ${CMAKE_CURRENT_LIST_DIR}) + +install(TARGETS ${TARGET_NAME} DESTINATION lib) # TODO unify lib install directory \ No newline at end of file diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt new file mode 100644 index 00000000..fbf09b88 --- /dev/null +++ b/tools/CMakeLists.txt @@ -0,0 +1,3 @@ +if(TARGET Qt5::Svg) + add_subdirectory(svg2qvg) +endif() \ No newline at end of file diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt new file mode 100644 index 00000000..9058c223 --- /dev/null +++ b/tools/svg2qvg/CMakeLists.txt @@ -0,0 +1,44 @@ +set(TARGET_NAME svg2qvg) +set(TARGET_INSTALL_SUFFIX bin/tools) +set(TARGET_SOURCES main.cpp) + +#TODO should this be configurable globally ? +option(${TARGET_NAME}_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES}) + +if(${TARGET_NAME}_STANDALONE) + + get_target_property(qskinny_AUTOGEN_DIR qskinny AUTOGEN_BUILD_DIR) + if (EXISTS ${qskinny_AUTOGEN_DIR}) + else() + set(qskinny_AUTOGEN_DIR ${CMAKE_BINARY_DIR}/src/qskinny_autogen/include_$) # TODO + endif() + + target_include_directories(${TARGET_NAME} + PRIVATE + ${CMAKE_SOURCE_DIR}/src/common + ${CMAKE_SOURCE_DIR}/src/graphic + ${qskinny_AUTOGEN_DIR}) + + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_STANDALONE) + + target_link_libraries(${TARGET_NAME} + PRIVATE + Qt5::Gui + Qt5::GuiPrivate + Qt5::Svg) +else() + target_compile_definitions(${TARGET_NAME} + PRIVATE + QskDll) + + target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + Qt5::Svg) +endif() + +install(TARGETS ${TARGET_NAME} DESTINATION ${TARGET_INSTALL_SUFFIX}) From ab86fb046884c5bd85d64ce2e64be83996372f2c Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 00:06:44 +0200 Subject: [PATCH 02/77] inputcontext compilable --- CMakeLists.txt | 4 ++-- inputcontext/CMakeLists.txt | 32 ++++++++++++++++++++------------ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d46ce21..cd39f6b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,12 +28,12 @@ message(STATUS "Qt5_VERSION_PATCH: ${Qt5_VERSION_PATCH}") add_subdirectory(src) add_subdirectory(skins) -#TODO -#add_subdirectory(inputcontext) +add_subdirectory(inputcontext) add_subdirectory(qmlexport) add_subdirectory(tools) add_subdirectory(support) add_subdirectory(examples) +#TODO #add_subdirectory(playground) #TODO diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index a694dffa..73da5b68 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -1,14 +1,8 @@ -set(TARGET_NAME qskinputcontext) - -target_link_libraries(${TARGET_NAME} PRIVATE gui-private) - # TODO # CONFIG += plugin # CONFIG += qskinny -if(QskDll) - target_compile_definitions(${TARGET_NAME} PRIVATE QSK_INPUTCONTEXT_MAKEDLL) -endif() +set(TARGET_NAME qskinputcontext) list(APPEND TARGET_HEADERS QskInputContextGlobal.h) @@ -19,6 +13,24 @@ list(APPEND TARGET_SOURCES list(APPEND TARGET_OTHER_FILES metadata.json) +add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) + +if(QskDll) + target_compile_definitions(${TARGET_NAME} + PRIVATE + QSK_INPUTCONTEXT_MAKEDLL) +endif() + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + Qt5::GuiPrivate) + +set_target_properties(${TARGET_NAME} PROPERTIES + AUTOMOC ON) + +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/platforminputcontexts) + # TODO # pinyin { # unix @@ -41,8 +53,4 @@ list(APPEND TARGET_OTHER_FILES # SOURCES += QskHunspellTextPredictor.cpp # } # -# } - -add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) - -install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/platforminputcontexts) \ No newline at end of file +# } \ No newline at end of file From 2c666f61266b0098024ff3d6a52006481931eb81 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 00:21:22 +0200 Subject: [PATCH 03/77] dialogbuttons compilable --- CMakeLists.txt | 3 +-- playground/CMakeLists.txt | 27 ++++++++++++------------- playground/dialogbuttons/CMakeLists.txt | 18 ++++++++++++++--- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cd39f6b4..dff2fedb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,8 +33,7 @@ add_subdirectory(qmlexport) add_subdirectory(tools) add_subdirectory(support) add_subdirectory(examples) -#TODO -#add_subdirectory(playground) +add_subdirectory(playground) #TODO #OTHER_FILES = diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt index 71b0dc26..f954281e 100644 --- a/playground/CMakeLists.txt +++ b/playground/CMakeLists.txt @@ -1,16 +1,15 @@ -TEMPLATE = subdirs +#add_subdirectory(anchors) +#add_subdirectory(dials) +add_subdirectory(dialogbuttons) +#add_subdirectory(invoker) +#add_subdirectory(inputpanel) +#add_subdirectory(images) +#add_subdirectory(shadows) - SUBDIRS += anchors dials dialogbuttons invoker inputpanel images +if(TARGET Qt5::WebEngine) # TODO check how to add optionally + #add_subdirectory(webview) +endif() - SUBDIRS += - shadows - - qtHaveModule(webengine){ - - SUBDIRS += webview - } - -qtHaveModule(quickwidgets) -{ - SUBDIRS += grids -} +if(TARGET Qt5::QuickWidgets) # TODO check how to add optionally + #add_subdirectory(grids) +endif() diff --git a/playground/dialogbuttons/CMakeLists.txt b/playground/dialogbuttons/CMakeLists.txt index 7b96337a..8df071bc 100644 --- a/playground/dialogbuttons/CMakeLists.txt +++ b/playground/dialogbuttons/CMakeLists.txt @@ -1,8 +1,20 @@ -CONFIG += qskexample +set(TARGET_NAME qskexample) list(APPEND TARGET_HEADERS - Window.h + Window.h) list(APPEND TARGET_SOURCES Window.cpp - main.cpp + main.cpp) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER examples) \ No newline at end of file From f860213739127dee38dd17cb5061271aea4aee16 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 16:54:18 +0200 Subject: [PATCH 04/77] reformatting and documentation --- CMakeLists.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dff2fedb..668799ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.20) -project(qskinny) +project(qskinny VERSION 999.99.9) # TODO get from git branch name or set_property(GLOBAL PROPERTY USE_FOLDERS ON) @@ -8,17 +8,18 @@ set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +# force include Qt's private headers +set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5") # TODO +set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5") # TODO pass in externally find_package(Qt5 REQUIRED COMPONENTS Core Gui Opengl Quick Quickwidgets Svg Webengine WebengineCore Widgets) message(STATUS "Qt5_VERSION : ${Qt5_VERSION}") From dcd0ecfa49db9297a1c41aa81589976f7f1090c7 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 17:21:01 +0200 Subject: [PATCH 05/77] qml examples compilable --- examples/CMakeLists.txt | 10 ++-- examples/boxes/CMakeLists.txt | 20 ++++++-- examples/buttons/CMakeLists.txt | 22 ++++++-- examples/frames/CMakeLists.txt | 26 ++++++++-- examples/glabels/CMakeLists.txt | 22 ++++++-- examples/iotdashboard/CMakeLists.txt | 3 +- examples/messageboxQml/CMakeLists.txt | 23 +++++++-- features/qskconfig.cmake | 67 +++++++++++-------------- playground/dialogbuttons/CMakeLists.txt | 2 +- qmlexport/CMakeLists.txt | 11 ++-- 10 files changed, 139 insertions(+), 67 deletions(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 054308d7..90fec924 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -11,10 +11,10 @@ add_subdirectory(iotdashboard) #qml -#add_subdirectory(boxes) -#add_subdirectory(buttons) -#add_subdirectory(frames) -#add_subdirectory(glabels) -#add_subdirectory(messageboxQml) +add_subdirectory(boxes) +add_subdirectory(buttons) +add_subdirectory(frames) +add_subdirectory(glabels) +add_subdirectory(messageboxQml) # TODO \ No newline at end of file diff --git a/examples/boxes/CMakeLists.txt b/examples/boxes/CMakeLists.txt index a76dd06a..3c200e19 100644 --- a/examples/boxes/CMakeLists.txt +++ b/examples/boxes/CMakeLists.txt @@ -1,8 +1,20 @@ -CONFIG += qskexample - list(APPEND TARGET_HEADERS - Box.h + Box.h) list(APPEND TARGET_SOURCES Box.cpp - main.cpp + main.cpp) + +set(TARGET_NAME boxes) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file diff --git a/examples/buttons/CMakeLists.txt b/examples/buttons/CMakeLists.txt index 6903a5ff..dcf81117 100644 --- a/examples/buttons/CMakeLists.txt +++ b/examples/buttons/CMakeLists.txt @@ -1,5 +1,21 @@ -CONFIG += qskexample qskqmlexport +list(APPEND TARGET_RESSOURCES + buttons.qrc) -list(APPEND TARGET_RESSOURCES buttons.qrc) +list(APPEND TARGET_SOURCES + main.cpp) - list(APPEND TARGET_SOURCES main.cpp) +set(TARGET_NAME buttons) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_RESSOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + qskqmlexport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) \ No newline at end of file diff --git a/examples/frames/CMakeLists.txt b/examples/frames/CMakeLists.txt index 42a8aefa..c9da2ba7 100644 --- a/examples/frames/CMakeLists.txt +++ b/examples/frames/CMakeLists.txt @@ -1,7 +1,25 @@ -CONFIG += qskexample qskqmlexport +list(APPEND TARGET_RESSOURCES + frames.qrc) -list(APPEND TARGET_RESSOURCES frames.qrc) +list(APPEND TARGET_HEADERS + Frame.h) - list(APPEND TARGET_HEADERS Frame.h) +list(APPEND TARGET_SOURCES + Frame.cpp + main.cpp) - list(APPEND TARGET_SOURCES Frame.cpp main.cpp) +set(TARGET_NAME frames) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + qskqmlexport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) \ No newline at end of file diff --git a/examples/glabels/CMakeLists.txt b/examples/glabels/CMakeLists.txt index 778a252e..f42d7e6a 100644 --- a/examples/glabels/CMakeLists.txt +++ b/examples/glabels/CMakeLists.txt @@ -1,5 +1,21 @@ -CONFIG += qskexample qskqmlexport +list(APPEND TARGET_RESSOURCES + glabels.qrc) -list(APPEND TARGET_RESSOURCES glabels.qrc) +list(APPEND TARGET_SOURCES + main.cpp) - list(APPEND TARGET_SOURCES main.cpp) +set(TARGET_NAME glabels) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_RESSOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + qskqmlexport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) \ No newline at end of file diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index 017335ef..867c7b65 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -73,7 +73,8 @@ add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSO set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON - AUTORCC ON) + AUTORCC ON + FOLDER examples) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/messageboxQml/CMakeLists.txt b/examples/messageboxQml/CMakeLists.txt index b8d1d692..0eac6563 100644 --- a/examples/messageboxQml/CMakeLists.txt +++ b/examples/messageboxQml/CMakeLists.txt @@ -1,8 +1,21 @@ -CONFIG += qskexample -CONFIG += qskqmlexport - list(APPEND TARGET_RESSOURCES - messagebox.qrc + messagebox.qrc) list(APPEND TARGET_SOURCES - main.cpp + main.cpp) + +set(TARGET_NAME messageboxQml) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_RESSOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + qskqmlexport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) \ No newline at end of file diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index 6d438310..93c820f5 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -3,13 +3,10 @@ # This file may be used under the terms of the QSkinny License, Version 1.0 ############################################################################ -set(QSK_VER_MAJ 0) -set(QSK_VER_MIN 0) -set(QSK_VER_PAT 0) -set(QSK_VERSION ${QSK_VER_MAJ}.${QSK_VER_MIN}.${QSK_VER_PAT}) +set(QSK_VERSION ${CMAKE_PROJECT_VERSION}) # trying the PREFIX environment variable first -set(QSK_INSTALL_PREFIX = $ENV{PREFIX}) # TODO still required? +set(QSK_INSTALL_PREFIX $ENV{PREFIX}) # TODO still required? if("${QSK_INSTALL_PREFIX}" STREQUAL "") set(QSK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") # TODO where does QT_INSTALL_PREFIX come from? @@ -59,8 +56,6 @@ set(MOC_DIR moc) set(OBJECTS_DIR obj) set(RCC_DIR rcc) -list(APPEND QSK_CONFIG QskDll) - option(QskDll "build qskinny as shared library" ON) if(UNIX AND NOT APPLE) @@ -114,41 +109,37 @@ if ("pedantic" IN_LIST CONFIG) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -pedantic-errors) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wextra) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Werror=format-security) - #QMAKE_CXXFLAGS *= -Wlogical-op - - # QMAKE_CXXFLAGS *= -Wconversion - # QMAKE_CXXFLAGS *= -Wfloat-equal - # QMAKE_CXXFLAGS *= -Wshadow - set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wsuggest-override) - # QMAKE_CXXFLAGS *= -Wsuggest-final-types - # QMAKE_CXXFLAGS *= -Wsuggest-final-methods - - # QMAKE_CXXFLAGS *= -fanalyzer + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wlogical-op) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wconversion) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wfloat-equal) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wshadow) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wsuggest-final-types) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wsuggest-final-methods) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fanalyzer) endif() if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-clang") - #QMAKE_CXXFLAGS *= -pedantic-errors - - #QMAKE_CXXFLAGS *= -Weverything - #QMAKE_CXXFLAGS *= -Wno-c++98-compat-pedantic - #QMAKE_CXXFLAGS *= -Wno-global-constructors - #QMAKE_CXXFLAGS *= -Wno-exit-time-destructors - #QMAKE_CXXFLAGS *= -Wno-padded - #QMAKE_CXXFLAGS *= -Wno-float-equal - #QMAKE_CXXFLAGS *= -Wno-undefined-reinterpret-cast - #QMAKE_CXXFLAGS *= -Wno-deprecated - #QMAKE_CXXFLAGS *= -Wno-switch-enum - #QMAKE_CXXFLAGS *= -Wno-keyword-macro - #QMAKE_CXXFLAGS *= -Wno-old-style-cast - #QMAKE_CXXFLAGS *= -Wno-used-but-marked-unused - #QMAKE_CXXFLAGS *= -Wno-weak-vtables - #QMAKE_CXXFLAGS *= -Wno-shadow - #QMAKE_CXXFLAGS *= -Wno-double-promotion - #QMAKE_CXXFLAGS *= -Wno-conversion - #QMAKE_CXXFLAGS *= -Wno-documentation-unknown-command - #QMAKE_CXXFLAGS *= -Wno-unused-macros + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -pedantic-errors) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Weverything) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-c++98-compat-pedantic) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-global-constructors) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-exit-time-destructors) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-padded) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-float-equal) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-undefined-reinterpret-cast) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-deprecated) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-switch-enum) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-keyword-macro) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-old-style-cast) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-used-but-marked-unused) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-weak-vtables) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-shadow) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-double-promotion) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-conversion) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-documentation-unknown-command) + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wno-unused-macros) endif() endif() @@ -159,7 +150,7 @@ if ("sanitize" IN_LIST CONFIG) # CONFIG *= sanitize_undefined if ("${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+" OR "${CMAKE_CXX_COMPILER}" MATCHES ".*linux-g\\+\\+-64") - #QMAKE_CXXFLAGS *= -fsanitize-address-use-after-scope + # set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fsanitize-address-use-after-scope) #QMAKE_LFLAGS *= -fsanitize-address-use-after-scope endif() endif() diff --git a/playground/dialogbuttons/CMakeLists.txt b/playground/dialogbuttons/CMakeLists.txt index 8df071bc..982cd1e7 100644 --- a/playground/dialogbuttons/CMakeLists.txt +++ b/playground/dialogbuttons/CMakeLists.txt @@ -17,4 +17,4 @@ target_link_libraries(${TARGET_NAME} set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON - FOLDER examples) \ No newline at end of file + FOLDER playground) \ No newline at end of file diff --git a/qmlexport/CMakeLists.txt b/qmlexport/CMakeLists.txt index 6e2a2768..f9cd0b6a 100644 --- a/qmlexport/CMakeLists.txt +++ b/qmlexport/CMakeLists.txt @@ -15,12 +15,17 @@ list(APPEND TARGET_SOURCES add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) -set_target_properties(${TARGET_NAME} PROPERTIES - AUTOMOC ON) +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON) target_link_libraries(${TARGET_NAME} PRIVATE - qskinny) + qskinny) + +target_include_directories(${TARGET_NAME} + PUBLIC + ${CMAKE_CURRENT_LIST_DIR}) if(QskDll) target_compile_definitions(${TARGET_NAME} From 83aa2170b6cf9c95481da5232fb042aead1cc473 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 17:59:07 +0200 Subject: [PATCH 06/77] all examples compileable --- examples/CMakeLists.txt | 22 ++++++------- examples/desktop/CMakeLists.txt | 18 +++++++++-- examples/gallery/CMakeLists.txt | 52 +++++++++++++++++++----------- examples/layouts/CMakeLists.txt | 24 +++++++++++--- examples/listbox/CMakeLists.txt | 19 +++++++++-- examples/messagebox/CMakeLists.txt | 19 +++++++++-- examples/mycontrols/CMakeLists.txt | 21 +++++++++--- examples/qvgviewer/CMakeLists.txt | 51 ++++++++++++++++++----------- examples/tabview/CMakeLists.txt | 20 +++++++++--- examples/thumbnails/CMakeLists.txt | 18 +++++++++-- 10 files changed, 190 insertions(+), 74 deletions(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 90fec924..ede5df3e 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,13 +1,13 @@ #c++ -#add_subdirectory(desktop) -#add_subdirectory(gallery) -#add_subdirectory(layouts) -#add_subdirectory(listbox) -#add_subdirectory(messagebox) -#add_subdirectory(mycontrols) -#add_subdirectory(qvgviewer) -#add_subdirectory(thumbnails) -#add_subdirectory(tabview) +add_subdirectory(desktop) +add_subdirectory(gallery) +add_subdirectory(layouts) +add_subdirectory(listbox) +add_subdirectory(messagebox) +add_subdirectory(mycontrols) +add_subdirectory(qvgviewer) +add_subdirectory(thumbnails) +add_subdirectory(tabview) add_subdirectory(iotdashboard) #qml @@ -15,6 +15,4 @@ add_subdirectory(boxes) add_subdirectory(buttons) add_subdirectory(frames) add_subdirectory(glabels) -add_subdirectory(messageboxQml) - -# TODO \ No newline at end of file +add_subdirectory(messageboxQml) \ No newline at end of file diff --git a/examples/desktop/CMakeLists.txt b/examples/desktop/CMakeLists.txt index 8b2cd0e3..681d713d 100644 --- a/examples/desktop/CMakeLists.txt +++ b/examples/desktop/CMakeLists.txt @@ -1,4 +1,16 @@ -CONFIG += qskexample - list(APPEND TARGET_SOURCES - main.cpp + main.cpp) + +set(TARGET_NAME desktop) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file diff --git a/examples/gallery/CMakeLists.txt b/examples/gallery/CMakeLists.txt index 4177e9e1..4b9fb6d0 100644 --- a/examples/gallery/CMakeLists.txt +++ b/examples/gallery/CMakeLists.txt @@ -1,50 +1,66 @@ -CONFIG += qskexample - list(APPEND TARGET_HEADERS - label/LabelPage.h + label/LabelPage.h) list(APPEND TARGET_SOURCES - label/LabelPage.cpp + label/LabelPage.cpp) list(APPEND TARGET_HEADERS - slider/SliderPage.h + slider/SliderPage.h) list(APPEND TARGET_SOURCES - slider/SliderPage.cpp + slider/SliderPage.cpp) list(APPEND TARGET_HEADERS - progressbar/ProgressBarPage.h + progressbar/ProgressBarPage.h) list(APPEND TARGET_SOURCES - progressbar/ProgressBarPage.cpp + progressbar/ProgressBarPage.cpp) list(APPEND TARGET_HEADERS - button/ButtonPage.h + button/ButtonPage.h) list(APPEND TARGET_SOURCES - button/ButtonPage.cpp + button/ButtonPage.cpp) list(APPEND TARGET_HEADERS - textinput/TextInputPage.h + textinput/TextInputPage.h) list(APPEND TARGET_SOURCES - textinput/TextInputPage.cpp + textinput/TextInputPage.cpp) list(APPEND TARGET_HEADERS - selector/SelectorPage.h + selector/SelectorPage.h) list(APPEND TARGET_SOURCES - selector/SelectorPage.cpp + selector/SelectorPage.cpp) list(APPEND TARGET_HEADERS - dialog/DialogPage.h + dialog/DialogPage.h) list(APPEND TARGET_SOURCES - dialog/DialogPage.cpp + dialog/DialogPage.cpp) list(APPEND TARGET_HEADERS - Page.h + Page.h) list(APPEND TARGET_SOURCES Page.cpp - main.cpp + main.cpp) + +set(TARGET_NAME gallery) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) + +target_include_directories(${TARGET_NAME} + PRIVATE + ${CMAKE_CURRENT_LIST_DIR}) \ No newline at end of file diff --git a/examples/layouts/CMakeLists.txt b/examples/layouts/CMakeLists.txt index 1a57b07a..0e347229 100644 --- a/examples/layouts/CMakeLists.txt +++ b/examples/layouts/CMakeLists.txt @@ -1,7 +1,5 @@ -CONFIG += qskexample qskqmlexport - list(APPEND TARGET_RESSOURCES - layouts.qrc + layouts.qrc) list(APPEND TARGET_HEADERS TestRectangle.h @@ -10,7 +8,7 @@ list(APPEND TARGET_HEADERS GridLayoutPage.h LinearLayoutPage.h DynamicConstraintsPage.h - StackLayoutPage.h + StackLayoutPage.h) list(APPEND TARGET_SOURCES TestRectangle.cpp @@ -20,4 +18,20 @@ list(APPEND TARGET_SOURCES LinearLayoutPage.cpp DynamicConstraintsPage.cpp StackLayoutPage.cpp - main.cpp + main.cpp) + +set(TARGET_NAME layouts) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qskqmlexport + qsktestsupport) \ No newline at end of file diff --git a/examples/listbox/CMakeLists.txt b/examples/listbox/CMakeLists.txt index 8b2cd0e3..c8c6131f 100644 --- a/examples/listbox/CMakeLists.txt +++ b/examples/listbox/CMakeLists.txt @@ -1,4 +1,17 @@ -CONFIG += qskexample - list(APPEND TARGET_SOURCES - main.cpp + main.cpp) + +set(TARGET_NAME listbox) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file diff --git a/examples/messagebox/CMakeLists.txt b/examples/messagebox/CMakeLists.txt index 8b2cd0e3..05eda1d9 100644 --- a/examples/messagebox/CMakeLists.txt +++ b/examples/messagebox/CMakeLists.txt @@ -1,4 +1,17 @@ -CONFIG += qskexample - list(APPEND TARGET_SOURCES - main.cpp + main.cpp) + +set(TARGET_NAME messagebox) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file diff --git a/examples/mycontrols/CMakeLists.txt b/examples/mycontrols/CMakeLists.txt index e8931b22..9563e9f2 100644 --- a/examples/mycontrols/CMakeLists.txt +++ b/examples/mycontrols/CMakeLists.txt @@ -1,12 +1,25 @@ -CONFIG += qskexample - list(APPEND TARGET_SOURCES MySkin.cpp MyToggleButton.cpp MyToggleButtonSkinlet.cpp - main.cpp + main.cpp) list(APPEND TARGET_HEADERS MyToggleButton.h MyToggleButtonSkinlet.h - MySkin.h + MySkin.h) + +set(TARGET_NAME mycontrols) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index 54aea663..133d508b 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -1,32 +1,45 @@ -CONFIG += qskexample - list(APPEND TARGET_HEADERS - MainWindow.h + MainWindow.h) list(APPEND TARGET_SOURCES MainWindow.cpp - main.cpp + main.cpp) + +set(TARGET_NAME qvgviewer) #CONFIG += autoqvg -autoqvg { - CONFIG += qskqvg +option(autoqvg "enable automatic qvg commpilation" OFF) - QVGlist(APPEND TARGET_RESSOURCES - qvgviewer.qrc +if(autoqvg) + # CONFIG += qskqvg # TODO why? - SVGSOURCES = + list(APPEND TARGET_RESSOURCES + qvgviewer.qrc) + + list(APPEND SVGSOURCES svg/01.01.10.svg svg/01.03.04q.svg svg/01.08.05q.svg - svg/01.25.18.svg - -} else { - -#When cross compiling we need to have the svg2qvg tool being -#compiled for the build environment - not for the one of the target. -#So we better have precompiled qvg files in the repository to -#make the build process much easier + svg/01.25.18.svg) +else() + # When cross compiling we need to have the svg2qvg tool being + # compiled for the build environment - not for the one of the target. + # So we better have precompiled qvg files in the repository to + # make the build process much easier list(APPEND TARGET_RESSOURCES - qvgviewer.qrc -} + qvgviewer.qrc) +endif() + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file diff --git a/examples/tabview/CMakeLists.txt b/examples/tabview/CMakeLists.txt index eb86cab2..dc5c07fc 100644 --- a/examples/tabview/CMakeLists.txt +++ b/examples/tabview/CMakeLists.txt @@ -1,12 +1,24 @@ -CONFIG += qskexample - list(APPEND TARGET_HEADERS CustomSlider.h CustomSliderSkinlet.h - OtherSlider.h + OtherSlider.h) list(APPEND TARGET_SOURCES CustomSlider.cpp CustomSliderSkinlet.cpp OtherSlider.cpp - main.cpp + main.cpp) + +set(TARGET_NAME tabview) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file diff --git a/examples/thumbnails/CMakeLists.txt b/examples/thumbnails/CMakeLists.txt index 8b2cd0e3..9b01107f 100644 --- a/examples/thumbnails/CMakeLists.txt +++ b/examples/thumbnails/CMakeLists.txt @@ -1,4 +1,16 @@ -CONFIG += qskexample - list(APPEND TARGET_SOURCES - main.cpp + main.cpp) + +set(TARGET_NAME thumbnails) + +add_executable(${TARGET_NAME} ${TARGET_SOURCES}) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER examples) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) \ No newline at end of file From 3045f5691f061b055d19a64b8e9e2e0346b6eb54 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 18:09:57 +0200 Subject: [PATCH 07/77] add folder property to skins --- skins/material3/CMakeLists.txt | 3 ++- skins/squiek/CMakeLists.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index 3ce28bc9..ca5b4b47 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -25,6 +25,7 @@ if(QskDll) endif() set_target_properties(${TARGET_NAME} PROPERTIES - AUTOMOC ON) + AUTOMOC ON + FOLDER skins) install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index 17457c7a..e531c9de 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -27,6 +27,7 @@ if(QskDll) endif() set_target_properties(${TARGET_NAME} PROPERTIES - AUTOMOC ON) + AUTOMOC ON + FOLDER skins) install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/${QSK_PLUGIN_SUBDIR}) From aa132beccbb739353d24b347a82c1120416a78b0 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 19:05:14 +0200 Subject: [PATCH 08/77] fixed install suffix location --- CMakeLists.txt | 11 +++++++---- features/qskconfig.cmake | 7 ------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 668799ab..c77fec78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,10 +22,13 @@ set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5") # TODO pass in externally find_package(Qt5 REQUIRED COMPONENTS Core Gui Opengl Quick Quickwidgets Svg Webengine WebengineCore Widgets) -message(STATUS "Qt5_VERSION : ${Qt5_VERSION}") -message(STATUS "Qt5_VERSION_MAJOR: ${Qt5_VERSION_MAJOR}") -message(STATUS "Qt5_VERSION_MINOR: ${Qt5_VERSION_MINOR}") -message(STATUS "Qt5_VERSION_PATCH: ${Qt5_VERSION_PATCH}") +# define install directories +set(QSK_INSTALL_DOCS doc) +set(QSK_INSTALL_HEADERS include) +set(QSK_INSTALL_LIBS lib) +set(QSK_INSTALL_BINS bin) +set(QSK_INSTALL_PLUGINS plugins) +set(QSK_INSTALL_EXAMPLES examples) add_subdirectory(src) add_subdirectory(skins) diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index 93c820f5..17ff525a 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -20,13 +20,6 @@ if("${QSK_INSTALL_PREFIX}" STREQUAL "") endif() endif() -set(QSK_INSTALL_DOCS doc) -set(QSK_INSTALL_HEADERS include) -set(QSK_INSTALL_LIBS lib) -set(QSK_INSTALL_BINS bin) -set(QSK_INSTALL_PLUGINS plugins) -set(QSK_INSTALL_EXAMPLES examples) - # TODO find compiler flag equivalent list(APPEND CONFIG no_private_qt_headers_warning) list(APPEND CONFIG warn_on) From 238e8aeb00dd99183217c8111dc7deb927fedf07 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 19:05:57 +0200 Subject: [PATCH 09/77] partially added ensure_skins mechanism --- support/CMakeLists.txt | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 39bf365a..80b56b9f 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -16,28 +16,6 @@ list(APPEND TARGET_SOURCES SkinnyShapeProvider.cpp SkinnyShortcut.cpp) -# TODO -# ensure_skins{ -# -# #Enabling fall back code, that inserts some skin factories manually -# #when not finding skin factories as plugins -# -# INCLUDEPATH *= $${QSK_ROOT} / skins DEPENDPATH *= -# $${QSK_ROOT} / -# skins -# -# target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR} / skins) -# -# target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) -# -# use_install_rpath : QMAKE_RPATHDIR *= -# $${QSK_INSTALL_PLUGINS} / skins use_local_rpath : QMAKE_RPATHDIR *= -# $${QSK_PLUGIN_DIR} / skins -# -# qskAddLibrary($${QSK_PLUGIN_DIR} / skins, squiekskin) -# qskAddLibrary($${QSK_PLUGIN_DIR} / skins, material3skin) -# } - # TODO #fontconfig{ # @@ -81,4 +59,19 @@ target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) +option(ensure_skins "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) + +if(ensure_skins) + target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/skins) + target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) + + # TODO + # use_install_rpath: QMAKE_RPATHDIR *= $${QSK_INSTALL_PLUGINS}/skins + # use_local_rpath: QMAKE_RPATHDIR *= $${QSK_PLUGIN_DIR}/skins + target_link_libraries(${TARGET_NAME} + PRIVATE + squiekskin + material3skin) +endif() + install(TARGETS ${TARGET_NAME} DESTINATION lib) # TODO unify lib install directory \ No newline at end of file From e23230be98dca0fe4bee113af2c8d0be0d927053 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 19:45:47 +0200 Subject: [PATCH 10/77] reformatting --- examples/iotdashboard/CMakeLists.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index 867c7b65..718a9ee9 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -69,12 +69,16 @@ list(APPEND TARGET_RESSOURCES set(TARGET_NAME iotdashboard) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} + ${TARGET_SOURCES} + ${TARGET_HEADERS} + ${TARGET_RESSOURCES}) -set_target_properties(${TARGET_NAME} PROPERTIES - AUTOMOC ON - AUTORCC ON - FOLDER examples) +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTORCC ON + FOLDER examples) target_link_libraries(${TARGET_NAME} PRIVATE From f2ec4f862f8322dfd2f88790e9a276825763ae7e Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 21:26:29 +0200 Subject: [PATCH 11/77] added svg2qvg cmake function --- examples/qvgviewer/CMakeLists.txt | 69 +++++++++++++++++++----------- scripts/cmake/qskinny-macros.cmake | 13 ++++++ src/CMakeLists.txt | 1 + 3 files changed, 57 insertions(+), 26 deletions(-) create mode 100644 scripts/cmake/qskinny-macros.cmake diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index 133d508b..ab3b462e 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -5,33 +5,28 @@ list(APPEND TARGET_SOURCES MainWindow.cpp main.cpp) +list(APPEND TARGET_RESSOURCES + qvgviewer.qrc) + +list(APPEND TARGET_SVGS + svg/01.01.10.svg + svg/01.03.04q.svg + svg/01.08.05q.svg + svg/01.25.18.svg) + +list(APPEND TARGET_QVGS + qvg/01.01.10.qvg + qvg/01.03.04q.qvg + qvg/01.08.05q.qvg + qvg/01.25.18.qvg) + set(TARGET_NAME qvgviewer) -#CONFIG += autoqvg - -option(autoqvg "enable automatic qvg commpilation" OFF) - -if(autoqvg) - # CONFIG += qskqvg # TODO why? - - list(APPEND TARGET_RESSOURCES - qvgviewer.qrc) - - list(APPEND SVGSOURCES - svg/01.01.10.svg - svg/01.03.04q.svg - svg/01.08.05q.svg - svg/01.25.18.svg) -else() - # When cross compiling we need to have the svg2qvg tool being - # compiled for the build environment - not for the one of the target. - # So we better have precompiled qvg files in the repository to - # make the build process much easier - list(APPEND TARGET_RESSOURCES - qvgviewer.qrc) -endif() - -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} + ${TARGET_SOURCES} + ${TARGET_HEADERS} + ${TARGET_RESSOURCES} + ${TARGET_SVGS}) set_target_properties(${TARGET_NAME} PROPERTIES @@ -42,4 +37,26 @@ set_target_properties(${TARGET_NAME} target_link_libraries(${TARGET_NAME} PRIVATE qskinny - qsktestsupport) \ No newline at end of file + qsktestsupport) + +option(autoqvg "enable automatic qvg commpilation" OFF) + +if(autoqvg) + svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.01.10.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.01.10.qvg) + svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.03.04q.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.03.04q.qvg) + svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.08.05q.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.08.05q.qvg) + svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.25.18.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.25.18.qvg) +else() + # When cross compiling we need to have the svg2qvg tool being + # compiled for the build environment - not for the one of the target. + # So we better have precompiled qvg files in the repository to + # make the build process much easier +endif() + +target_sources(${TARGET_NAME} PRIVATE ${TARGET_QVGS}) +source_group("generated" FILES ${TARGET_QVGS}) +source_group("svg" FILES ${TARGET_SVGS}) \ No newline at end of file diff --git a/scripts/cmake/qskinny-macros.cmake b/scripts/cmake/qskinny-macros.cmake new file mode 100644 index 00000000..9c44de94 --- /dev/null +++ b/scripts/cmake/qskinny-macros.cmake @@ -0,0 +1,13 @@ +if(TARGET Qt5::Svg) + ## @param SVG_FILENAME absolute filename to the svg + ## @param QVG_FILENAME absolute filename to the qvg + function(svg2qvg SVG_FILENAME QVG_FILENAME) + get_filename_component(SVG_FILENAME ${SVG_FILENAME} ABSOLUTE) + add_custom_command( + COMMAND svg2qvg ${SVG_FILENAME} ${QVG_FILENAME} + OUTPUT ${QVG_FILENAME} + DEPENDS ${SVG_FILENAME} + WORKING_DIRECTORY $ + COMMENT "Compiling ${SVG_FILENAME} to ${QVG_FILENAME}") + endfunction() +endif() \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 06aa6c7a..7d9b159f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,5 @@ include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) +include(${CMAKE_SOURCE_DIR}/scripts/cmake/qskinny-macros.cmake) #TODO #QSK_SUBDIRS = common graphic nodes controls layouts dialogs inputpanel From ce233ccb093d3d673366e51d2f6041ce20f0db6e Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 21:34:04 +0200 Subject: [PATCH 12/77] make svg2qvg for robust --- scripts/cmake/qskinny-macros.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/cmake/qskinny-macros.cmake b/scripts/cmake/qskinny-macros.cmake index 9c44de94..b107c169 100644 --- a/scripts/cmake/qskinny-macros.cmake +++ b/scripts/cmake/qskinny-macros.cmake @@ -2,6 +2,7 @@ if(TARGET Qt5::Svg) ## @param SVG_FILENAME absolute filename to the svg ## @param QVG_FILENAME absolute filename to the qvg function(svg2qvg SVG_FILENAME QVG_FILENAME) + get_filename_component(QVG_FILENAME ${QVG_FILENAME} ABSOLUTE) get_filename_component(SVG_FILENAME ${SVG_FILENAME} ABSOLUTE) add_custom_command( COMMAND svg2qvg ${SVG_FILENAME} ${QVG_FILENAME} From b7e283c35c012ac99bc5c02458fe2b4b446872c4 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 29 Sep 2022 22:31:47 +0200 Subject: [PATCH 13/77] playground compileable --- CMakeLists.txt | 13 ++-------- examples/iotdashboard/CMakeLists.txt | 7 +---- playground/CMakeLists.txt | 22 ++++++++-------- playground/anchors/CMakeLists.txt | 27 +++++++++++++++----- playground/dials/CMakeLists.txt | 25 ++++++++++++++---- playground/grids/CMakeLists.txt | 38 ++++++++++++++++++++-------- playground/images/CMakeLists.txt | 30 +++++++++++++++------- playground/inputpanel/CMakeLists.txt | 19 +++++++++++--- playground/invoker/CMakeLists.txt | 24 +++++++++++++----- playground/shadows/CMakeLists.txt | 22 +++++++++++++--- playground/webview/CMakeLists.txt | 21 ++++++++++++--- 11 files changed, 174 insertions(+), 74 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c77fec78..a205098e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,20 +39,11 @@ add_subdirectory(support) add_subdirectory(examples) add_subdirectory(playground) -#TODO +#TODO add doxygen support #OTHER_FILES = #doc / Doxyfile #doc/*.dox # doc/*.metadox # doc/classes/*.dox # doc/classes/*.metadox -# TODO - -# TODO -# qmlexport.depends = src -# inputcontext.depends = src -# skins.depends = src -# tools.depends = src -# support.depends = src skins -# examples.depends = tools support skins qmlexport -# playground.depends = tools support skins qmlexport +# TODO \ No newline at end of file diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index 718a9ee9..3a52c3b6 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -84,9 +84,4 @@ target_link_libraries(${TARGET_NAME} PRIVATE qskinny qsktestsupport - Qt5::Svg) - -# TODO: examples should not use private headers -target_link_libraries(${TARGET_NAME} - PRIVATE - Qt5::QuickPrivate) # TODO why not transive by qskinny target \ No newline at end of file + Qt5::Svg) \ No newline at end of file diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt index f954281e..75e9f70b 100644 --- a/playground/CMakeLists.txt +++ b/playground/CMakeLists.txt @@ -1,15 +1,17 @@ -#add_subdirectory(anchors) -#add_subdirectory(dials) +add_subdirectory(anchors) +add_subdirectory(dials) add_subdirectory(dialogbuttons) -#add_subdirectory(invoker) -#add_subdirectory(inputpanel) -#add_subdirectory(images) -#add_subdirectory(shadows) +add_subdirectory(invoker) +add_subdirectory(inputpanel) +add_subdirectory(images) +add_subdirectory(shadows) -if(TARGET Qt5::WebEngine) # TODO check how to add optionally - #add_subdirectory(webview) +# if(TARGET Qt5::WebEngine) # TODO check how to add optionally +if(TRUE) + add_subdirectory(webview) endif() -if(TARGET Qt5::QuickWidgets) # TODO check how to add optionally - #add_subdirectory(grids) +# if(TARGET Qt5::QuickWidgets) # TODO check how to add optionally +if(TRUE) + add_subdirectory(grids) endif() diff --git a/playground/anchors/CMakeLists.txt b/playground/anchors/CMakeLists.txt index 10af3778..9f9c9f19 100644 --- a/playground/anchors/CMakeLists.txt +++ b/playground/anchors/CMakeLists.txt @@ -1,21 +1,36 @@ -CONFIG += qskexample - list(APPEND TARGET_HEADERS kiwi/Constraint.h kiwi/Expression.h kiwi/Solver.h kiwi/Strength.h kiwi/Term.h - kiwi/Variable.h + kiwi/Variable.h) list(APPEND TARGET_SOURCES kiwi/Expression.cpp kiwi/Constraint.cpp - kiwi/Solver.cpp + kiwi/Solver.cpp) list(APPEND TARGET_HEADERS - AnchorBox.h + AnchorBox.h) list(APPEND TARGET_SOURCES AnchorBox.cpp - main.cpp + main.cpp) + +set(TARGET_NAME anchors) + +add_executable(${TARGET_NAME} + ${TARGET_SOURCES} + ${TARGET_HEADERS} + ${TARGET_RESSOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER playground) \ No newline at end of file diff --git a/playground/dials/CMakeLists.txt b/playground/dials/CMakeLists.txt index be7505a2..f8e8130f 100644 --- a/playground/dials/CMakeLists.txt +++ b/playground/dials/CMakeLists.txt @@ -1,17 +1,32 @@ -CONFIG += qskexample - list(APPEND TARGET_HEADERS SkinFactory.h Dial.h DialSkinlet.h - Dashboard.h + Dashboard.h) list(APPEND TARGET_SOURCES SkinFactory.cpp Dial.cpp DialSkinlet.cpp Dashboard.cpp - main.cpp + main.cpp) list(APPEND TARGET_RESSOURCES - images.qrc + images.qrc) + +set(TARGET_NAME dials) + +add_executable(${TARGET_NAME} + ${TARGET_SOURCES} + ${TARGET_HEADERS} + ${TARGET_RESSOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER playground) \ No newline at end of file diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt index 52dcff88..3768aa1c 100644 --- a/playground/grids/CMakeLists.txt +++ b/playground/grids/CMakeLists.txt @@ -1,5 +1,3 @@ -CONFIG += qskexample -target_link_libraries(${TARGET_NAME} PRIVATE widgets quickwidgets) list(APPEND TARGET_HEADERS GridAccessor.h @@ -7,7 +5,7 @@ list(APPEND TARGET_HEADERS GridWidgets.h GridGraphics.h GridQuick.h - TestBox.h + TestBox.h) list(APPEND TARGET_SOURCES GridAccessor.cpp @@ -16,12 +14,30 @@ list(APPEND TARGET_SOURCES GridGraphics.cpp GridQuick.cpp TestBox.cpp - main.cpp + main.cpp) -linux { - pedantic - { - QMAKE_CXXFLAGS += -isystem $$[ QT_INSTALL_HEADERS ] / QtQuickWidgets QMAKE_CXXFLAGS += - -isystem $$[ QT_INSTALL_HEADERS ] / QtWidgets - } -} +set(TARGET_NAME grid) + +add_executable(${TARGET_NAME} + ${TARGET_SOURCES} + ${TARGET_HEADERS}) + +# TODO +#linux { +# pedantic +# { +# QMAKE_CXXFLAGS += -isystem $$[ QT_INSTALL_HEADERS ] / QtQuickWidgets QMAKE_CXXFLAGS += +# -isystem $$[ QT_INSTALL_HEADERS ] / QtWidgets +# } +#} + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + Qt5::QuickWidgets) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER playground) \ No newline at end of file diff --git a/playground/images/CMakeLists.txt b/playground/images/CMakeLists.txt index 771aff5c..66915eab 100644 --- a/playground/images/CMakeLists.txt +++ b/playground/images/CMakeLists.txt @@ -1,15 +1,27 @@ -CONFIG += qskexample qskqmlexport - -target_link_libraries(${TARGET_NAME} - PRIVATE - Qt5::QuickPrivate) - list(APPEND TARGET_RESSOURCES - images.qrc + images.qrc) list(APPEND TARGET_HEADERS - Image.h + Image.h) list(APPEND TARGET_SOURCES Image.cpp - main.cpp + main.cpp) + +set(TARGET_NAME images) + +add_executable(${TARGET_NAME} + ${TARGET_SOURCES} + ${TARGET_HEADERS} + ${TARGET_RESSOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qskqmlexport + qsktestsupport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER playground) \ No newline at end of file diff --git a/playground/inputpanel/CMakeLists.txt b/playground/inputpanel/CMakeLists.txt index 8b2cd0e3..9e950bbd 100644 --- a/playground/inputpanel/CMakeLists.txt +++ b/playground/inputpanel/CMakeLists.txt @@ -1,4 +1,17 @@ -CONFIG += qskexample - list(APPEND TARGET_SOURCES - main.cpp + main.cpp) + +set(TARGET_NAME inputpanel) + +add_executable(${TARGET_NAME} + ${TARGET_SOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER playground) diff --git a/playground/invoker/CMakeLists.txt b/playground/invoker/CMakeLists.txt index cc6566c3..26a08274 100644 --- a/playground/invoker/CMakeLists.txt +++ b/playground/invoker/CMakeLists.txt @@ -1,12 +1,24 @@ -CONFIG += qskexample - -QMAKE_MOC_OPTIONS += -nw # disable warning about missing READ - list(APPEND TARGET_HEADERS Callback.h - Invoker.h + Invoker.h) list(APPEND TARGET_SOURCES Callback.cpp Invoker.cpp - main.cpp + main.cpp) + +set(TARGET_NAME invoker) + +add_executable(${TARGET_NAME} + ${TARGET_SOURCES} + ${TARGET_HEADERS}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + AUTOMOC_MOC_OPTIONS -nw + FOLDER playground) \ No newline at end of file diff --git a/playground/shadows/CMakeLists.txt b/playground/shadows/CMakeLists.txt index 00b2b539..f8a9ba9a 100644 --- a/playground/shadows/CMakeLists.txt +++ b/playground/shadows/CMakeLists.txt @@ -1,8 +1,22 @@ -CONFIG += qskexample - list(APPEND TARGET_HEADERS - ShadowedBox.h + ShadowedBox.h) list(APPEND TARGET_SOURCES ShadowedBox.cpp - main.cpp + main.cpp) + +set(TARGET_NAME shadows) + +add_executable(${TARGET_NAME} + ${TARGET_HEADERS} + ${TARGET_SOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER playground) \ No newline at end of file diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt index b14cbb64..8bd5b756 100644 --- a/playground/webview/CMakeLists.txt +++ b/playground/webview/CMakeLists.txt @@ -1,5 +1,20 @@ -CONFIG += qskexample -target_link_libraries(${TARGET_NAME} PRIVATE webengine webengine-private webenginecore-private core-private) list(APPEND TARGET_SOURCES - main.cpp + main.cpp) + +set(TARGET_NAME webview) + +add_executable(${TARGET_NAME} + ${TARGET_SOURCES}) + +target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + Qt5::WebEngine + Qt5::WebEnginePrivate) + +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOMOC ON + FOLDER playground) \ No newline at end of file From dfbcf73e765b0e7f8c68eb24c78a81e79d693d15 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 10 Oct 2022 12:58:48 +0200 Subject: [PATCH 14/77] Made Qt directory to cache variable --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a205098e..ea241725 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,7 @@ set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5") # TODO pass in externally +set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5" CACHE PATH "") # TODO pass in externally find_package(Qt5 REQUIRED COMPONENTS Core Gui Opengl Quick Quickwidgets Svg Webengine WebengineCore Widgets) # define install directories From e19620ffaa5437c277abe46b4be17995ad279ad8 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 10 Oct 2022 14:11:13 +0200 Subject: [PATCH 15/77] Unified option naming to ENABLE_ and BUILD_ --- examples/qvgviewer/CMakeLists.txt | 4 ++-- features/qskconfig.cmake | 2 +- inputcontext/CMakeLists.txt | 2 +- qmlexport/CMakeLists.txt | 2 +- skins/material3/CMakeLists.txt | 2 +- skins/squiek/CMakeLists.txt | 2 +- src/CMakeLists.txt | 2 +- support/CMakeLists.txt | 6 +++--- tools/svg2qvg/CMakeLists.txt | 9 ++------- 9 files changed, 13 insertions(+), 18 deletions(-) diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index ab3b462e..7b0894f2 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -39,9 +39,9 @@ target_link_libraries(${TARGET_NAME} qskinny qsktestsupport) -option(autoqvg "enable automatic qvg commpilation" OFF) +option(ENABLE_AUTOQVG "enable automatic qvg commpilation" OFF) -if(autoqvg) +if(ENABLE_AUTOQVG) svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.01.10.svg ${CMAKE_CURRENT_LIST_DIR}/qvg/01.01.10.qvg) svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.03.04q.svg diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index 17ff525a..951b59c4 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -49,7 +49,7 @@ set(MOC_DIR moc) set(OBJECTS_DIR obj) set(RCC_DIR rcc) -option(QskDll "build qskinny as shared library" ON) +option(BUILD_QSKDLL "build qskinny as shared library" ON) if(UNIX AND NOT APPLE) set(LINUX TRUE) diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index 73da5b68..0d3c6dc0 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -15,7 +15,7 @@ list(APPEND TARGET_OTHER_FILES add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) -if(QskDll) +if(BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PRIVATE QSK_INPUTCONTEXT_MAKEDLL) diff --git a/qmlexport/CMakeLists.txt b/qmlexport/CMakeLists.txt index f9cd0b6a..4bd6b8fa 100644 --- a/qmlexport/CMakeLists.txt +++ b/qmlexport/CMakeLists.txt @@ -27,7 +27,7 @@ target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) -if(QskDll) +if(BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PRIVATE QSK_QML_MAKEDLL) diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index ca5b4b47..8b504e4f 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -18,7 +18,7 @@ add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_O target_link_libraries(${TARGET_NAME} PRIVATE qskinny) -if(QskDll) +if(BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PRIVATE QSK_MATERIAL3_MAKEDLL) diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index e531c9de..59525af7 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -20,7 +20,7 @@ target_link_libraries(${TARGET_NAME} PRIVATE qskinny) -if(QskDll) +if(BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PRIVATE QSK_SQUIEK_MAKEDLL) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7d9b159f..e43af76e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -414,7 +414,7 @@ if (Qt5_VERSION_MAJOR VERSION_GREATER "5") target_link_libraries(${TARGET_NAME} PRIVATE Qt5::Opengl) endif() -if(QskDll) +if(BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PUBLIC QSK_DLL diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 80b56b9f..70555a45 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -45,7 +45,7 @@ target_link_libraries(${TARGET_NAME} PRIVATE qskinny) -if (QskDll) +if (BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PRIVATE SKINNY_MAKEDLL) @@ -59,9 +59,9 @@ target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) -option(ensure_skins "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) +option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) -if(ensure_skins) +if(ENABLE_ENSURE_SKINS) target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/skins) target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index 9058c223..87fc8dfe 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -2,12 +2,11 @@ set(TARGET_NAME svg2qvg) set(TARGET_INSTALL_SUFFIX bin/tools) set(TARGET_SOURCES main.cpp) -#TODO should this be configurable globally ? -option(${TARGET_NAME}_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) +option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) add_executable(${TARGET_NAME} ${TARGET_SOURCES}) -if(${TARGET_NAME}_STANDALONE) +if(BUILD_SVG2QVG_STANDALONE) get_target_property(qskinny_AUTOGEN_DIR qskinny AUTOGEN_BUILD_DIR) if (EXISTS ${qskinny_AUTOGEN_DIR}) @@ -31,10 +30,6 @@ if(${TARGET_NAME}_STANDALONE) Qt5::GuiPrivate Qt5::Svg) else() - target_compile_definitions(${TARGET_NAME} - PRIVATE - QskDll) - target_link_libraries(${TARGET_NAME} PRIVATE qskinny From c33cf9886d41621288a7a7a226f114a4284014f6 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 17 Oct 2022 21:45:15 +0200 Subject: [PATCH 16/77] build qskinny as shared library --- CMakeLists.txt | 2 +- skins/material3/CMakeLists.txt | 6 +++++- skins/material3/QskMaterial3SkinFactory.h | 3 ++- skins/squiek/CMakeLists.txt | 6 +++++- skins/squiek/QskSquiekSkinFactory.h | 2 ++ src/CMakeLists.txt | 6 +++++- support/CMakeLists.txt | 8 ++++++-- 7 files changed, 26 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea241725..ff5ccf6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,7 @@ set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5_DIR "C:/.conan/ea20b9/1/lib/cmake/Qt5" CACHE PATH "") # TODO pass in externally +set(Qt5_DIR "C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5" CACHE PATH "") # TODO pass in externally find_package(Qt5 REQUIRED COMPONENTS Core Gui Opengl Quick Quickwidgets Svg Webengine WebengineCore Widgets) # define install directories diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index 8b504e4f..c117b02e 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -14,7 +14,11 @@ list(APPEND TARGET_SOURCES list(APPEND TARGET_OTHER_FILES metadata.json) -add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) +if(BUILD_QSKDLL) + add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) +else() + add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) +endif() target_link_libraries(${TARGET_NAME} PRIVATE qskinny) diff --git a/skins/material3/QskMaterial3SkinFactory.h b/skins/material3/QskMaterial3SkinFactory.h index 9727a329..f7edf8a4 100644 --- a/skins/material3/QskMaterial3SkinFactory.h +++ b/skins/material3/QskMaterial3SkinFactory.h @@ -12,9 +12,10 @@ class QSK_MATERIAL3_EXPORT QskMaterial3SkinFactory : public QskSkinFactory { Q_OBJECT - +#if defined( QSK_MATERIAL3_MAKEDLL ) Q_PLUGIN_METADATA( IID QskSkinFactoryIID FILE "metadata.json" ) Q_INTERFACES( QskSkinFactory ) +#endif public: QskMaterial3SkinFactory( QObject* parent = nullptr ); diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index 59525af7..47c120e3 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -14,7 +14,11 @@ list(APPEND TARGET_SOURCES list(APPEND TARGET_OTHER_FILES metadata.json) -add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) +if(BUILD_QSKDLL) + add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) +else() + add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) +endif() target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/skins/squiek/QskSquiekSkinFactory.h b/skins/squiek/QskSquiekSkinFactory.h index 280135bb..73f3f936 100644 --- a/skins/squiek/QskSquiekSkinFactory.h +++ b/skins/squiek/QskSquiekSkinFactory.h @@ -13,8 +13,10 @@ class QSK_SQUIEK_EXPORT QskSquiekSkinFactory : public QskSkinFactory { Q_OBJECT +#if defined( QSK_SQUIEK_MAKEDLL ) Q_PLUGIN_METADATA( IID QskSkinFactoryIID FILE "metadata.json" ) Q_INTERFACES( QskSkinFactory ) +#endif public: QskSquiekSkinFactory( QObject* parent = nullptr ); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e43af76e..b8920622 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -408,7 +408,11 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME qskinny) -add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +if(BUILD_QSKDLL) + add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +else() + add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +endif() if (Qt5_VERSION_MAJOR VERSION_GREATER "5") target_link_libraries(${TARGET_NAME} PRIVATE Qt5::Opengl) diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 70555a45..31d853fb 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -36,13 +36,17 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME qsktestsupport) -add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) +if (BUILD_QSKDLL) + add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) +else() + add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS}) +endif() set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON) target_link_libraries(${TARGET_NAME} - PRIVATE + PUBLIC qskinny) if (BUILD_QSKDLL) From 0f9092c9051cda4d1437dc0f0882c52a9eaf194e Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 17 Oct 2022 22:01:57 +0200 Subject: [PATCH 17/77] fixed typo --- examples/qvgviewer/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index 7b0894f2..c51d756b 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -39,7 +39,7 @@ target_link_libraries(${TARGET_NAME} qskinny qsktestsupport) -option(ENABLE_AUTOQVG "enable automatic qvg commpilation" OFF) +option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF) if(ENABLE_AUTOQVG) svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.01.10.svg From 380ae19fc0d224c88bca73010feb9d6ec422c29a Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 17 Oct 2022 22:05:14 +0200 Subject: [PATCH 18/77] add github actions build matrix for cmake --- .github/workflows/cmake.yml | 190 ++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 .github/workflows/cmake.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml new file mode 100644 index 00000000..3cbbed32 --- /dev/null +++ b/.github/workflows/cmake.yml @@ -0,0 +1,190 @@ +name: CMake Build Matrix + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + name: ${{ matrix.config.name }} + runs-on: ${{ matrix.config.os }} + strategy: + fail-fast: false + matrix: + config: + - { + name: "Windows Latest MSVC", + os: windows-latest, + artifact: "windows_msvc.7z", + build_type: "Release", + cc: "cl", + cxx: "cl", + environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", + archiver: "7z a", + generators: "Visual Studio 17 2022" + } + - { + name: "Windows 2019 MSVC", + os: windows-2019, + artifact: "windows_msvc.7z", + build_type: "Release", + cc: "cl", + cxx: "cl", + environment_script: "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", + archiver: "7z a", + generators: "Visual Studio 16 2019" + } + - { + name: "Windows Latest MinGW", + os: windows-latest, + artifact: "windows_mingw.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja" + } + - { + name: "Ubuntu_Latest_GCC", + os: ubuntu-latest, + artifact: "ubuntu_gcc.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja" + } + - { + name: "Ubuntu_GCC_9", + os: ubuntu-latest, + artifact: "ubuntu_gcc9.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja" + } + - { + name: "macOS Latest Clang", + os: macos-latest, + artifact: "macos_clang.7z", + build_type: "Release", + cc: "clang", + cxx: "clang++", + archiver: "7za a", + generators: "Ninja" + } + + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + + - name: Print env + run: | + echo github.event.action: ${{ github.event.action }} + echo github.event_name: ${{ github.event_name }} + - name: Install dependencies on windows + if: startsWith(matrix.config.os, 'windows') + run: | + choco install ninja cmake + ninja --version + cmake --version + # cmd "${{ matrix.config.environment_script }}" + + - name: Install dependencies on ubuntu + if: startsWith(matrix.config.name, 'Ubuntu_Latest_GCC') + run: | + sudo apt-get update + sudo apt-get install ninja-build cmake + ninja --version + cmake --version + gcc --version + - name: Install dependencies on ubuntu9 + if: startsWith(matrix.config.name, 'Ubuntu_GCC_9') + run: | + echo Update gcc-9 ======================================================================= + echo gcc version before + gcc --version + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install ninja-build cmake gcc-9 g++-9 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9 + echo gcc version after + gcc --version + echo Update ninja ======================================================================= + echo ninja version before + ninja --version + # wget https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-linux.zip + wget https://github.com/ninja-build/ninja/releases/latest/download/ninja-linux.zip + sudo unzip ninja-linux.zip -d /usr/local/bin/ + sudo update-alternatives --install /usr/bin/ninja ninja /usr/local/bin/ninja 1 --force + echo ninja version after + ninja --version + echo Update cmake ======================================================================= + echo cmake version before + cmake --version + # curl --silent "https://api.github.com/repos/Kitware/CMake/releases/latest" | sed -n 's/.*tag_name":\s"\(.*\)".*/\1/p' | head -2 + # wget https://github.com/Kitware/CMake/releases/latest/download/cmake-3.16.5-Linux-x86_64.sh + cmake_version=$(curl --silent "https://api.github.com/repos/Kitware/CMake/releases/latest" | sed -n 's/.*tag_name":\s"\(.*\)".*/\1/p' | head -2 | cut -c 2-) + echo cmake download latest v$cmake_version version + wget https://github.com/Kitware/CMake/releases/download/v$cmake_version/cmake-$cmake_version-Linux-x86_64.sh + chmod +x cmake-$cmake_version-Linux-x86_64.sh + sudo mkdir /opt/cmake + sudo ./cmake-$cmake_version-Linux-x86_64.sh --prefix=/opt/cmake --skip-license + sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake/bin/cmake 1 --force + echo cmake version after + cmake --version + - name: Install dependencies on macos + if: startsWith(matrix.config.os, 'macos') + run: | + brew install p7zip cmake ninja + ninja --version + cmake --version + + - name: Configure + shell: bash + run: | + mkdir build + mkdir instdir + cmake \ + -S . \ + -B . \ + -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ + -G "${{ matrix.config.generators }}" \ + -DCMAKE_INSTALL_PREFIX:PATH=instdir + - name: Build + shell: bash + run: cmake --build . --config ${{ matrix.config.build_type }} + + #- name: Tests + # shell: bash + # run: ctest -j14 -C Release -T test --output-on-failure + + # - name: Install Strip + # shell: bash + # run: cmake --install . --strip + + # - name: Pack + # shell: bash + # working-directory: instdir + # run: | + # ls -laR + # ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . + # - name: Upload + # uses: actions/upload-artifact@v1 + # with: + # path: ./${{ matrix.config.artifact }} + # name: ${{ matrix.config.artifact }} + + # - name: Upload release asset + # if: github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'created') + # uses: actions/upload-release-asset@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ github.event.release.upload_url }} + # asset_path: ./${{ matrix.config.artifact }} + # asset_name: ${{ matrix.config.artifact }}.zip + # asset_content_type: application/zip \ No newline at end of file From 9982d7321ebcec687567c0b8400b39e3d0bd8427 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 27 Oct 2022 19:01:10 +0200 Subject: [PATCH 19/77] add pinyin and huspell to sources; support qt5 and qt6 --- .gitignore | 1 + CMakeLists.txt | 68 +++++++++++++++++----- examples/iotdashboard/CMakeLists.txt | 2 +- features/qskconfig.cmake | 2 + inputcontext/CMakeLists.txt | 52 ++++++++--------- playground/CMakeLists.txt | 4 +- playground/grids/CMakeLists.txt | 2 +- playground/webview/CMakeLists.txt | 16 ++++- playground/webview/main.cpp | 3 + scripts/cmake/qskinny-macros.cmake | 4 +- src/CMakeLists.txt | 87 ++++++++++++---------------- src/common/QskNamespace.h | 4 ++ src/graphic/QskStandardSymbol.h | 4 ++ tools/CMakeLists.txt | 2 +- tools/svg2qvg/CMakeLists.txt | 8 +-- 15 files changed, 155 insertions(+), 104 deletions(-) diff --git a/.gitignore b/.gitignore index 6d51d27d..32698b35 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ qskinny.pro.user *.log html tags +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt index ff5ccf6c..ae1d52f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.20) +cmake_minimum_required(VERSION 3.16.3) project(qskinny VERSION 999.99.9) # TODO get from git branch name or @@ -8,21 +8,63 @@ set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -# force include Qt's private headers -set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) -set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) +if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") + message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") +else() + # force include Qt's private headers + if(NOT "${Qt5_DIR}" STREQUAL "") + set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + elseif(NOT "${Qt6_DIR}" STREQUAL "") + #set(Qt6Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6WebEngineQuick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + endif() +endif() -set(Qt5_DIR "C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5" CACHE PATH "") # TODO pass in externally -find_package(Qt5 REQUIRED COMPONENTS Core Gui Opengl Quick Quickwidgets Svg Webengine WebengineCore Widgets) +if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") + message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") +else() + if(NOT "${Qt5_DIR}" STREQUAL "") + find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Quickwidgets Svg Webengine WebengineCore Widgets) + set(Qt Qt${Qt5_VERSION_MAJOR}) # TODO find better solution for Qt namespace + set(Qt_VERSION ${Qt5_VERSION}) + set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) + set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) + set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) + elseif(NOT "${Qt6_DIR}" STREQUAL "") + find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick Quickwidgets Svg WebEngineCore WebEngineQuick Widgets) + set(Qt Qt${Qt6_VERSION_MAJOR}) # TODO find better solution for Qt namespace + set(Qt_VERSION ${Qt6_VERSION}) + set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) + set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) + set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) + endif() +endif() + +if(TRUE) + message(STATUS "\${Qt} : ${Qt}") + message(STATUS "\${Qt_VERSION_MAJOR}: ${Qt_VERSION_MAJOR}") + message(STATUS "\${Qt_VERSION_MINOR}: ${Qt_VERSION_MINOR}") + message(STATUS "\${Qt_VERSION_PATCH}: ${Qt_VERSION_PATCH}") +endif() # define install directories + set(QSK_INSTALL_DOCS doc) set(QSK_INSTALL_HEADERS include) set(QSK_INSTALL_LIBS lib) diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index 3a52c3b6..d3545c78 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -84,4 +84,4 @@ target_link_libraries(${TARGET_NAME} PRIVATE qskinny qsktestsupport - Qt5::Svg) \ No newline at end of file + ${Qt}::Svg) \ No newline at end of file diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index 951b59c4..e1181b60 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -50,6 +50,8 @@ set(OBJECTS_DIR obj) set(RCC_DIR rcc) option(BUILD_QSKDLL "build qskinny as shared library" ON) +option(ENABLE_PINYIN "enable romanization system for standard mandarin chinese" ON) +option(ENABLE_HUNSPELL "enable spell checker" ON) if(UNIX AND NOT APPLE) set(LINUX TRUE) diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index 0d3c6dc0..8987b5e8 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -13,6 +13,30 @@ list(APPEND TARGET_SOURCES list(APPEND TARGET_OTHER_FILES metadata.json) +if(ENABLE_PINYIN) + if(UNIX) + # TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin + list(APPEND TARGET_HEADERS + QskPinyinTextPredictor.h) + list(APPEND TARGET_SOURCES + QskPinyinTextPredictor.cpp) + else() + message(WARNING "Feature 'pinyin' currently only available for UNIX!") + endif() +endif() + +if(ENABLE_HUNSPELL) + if(UNIX) + # TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell + list(APPEND TARGET_HEADERS + QskHunspellTextPredictor.h) + list(APPEND TARGET_SOURCES + QskHunspellTextPredictor.cpp) + else() + message(WARNING "Feature 'hunspell' currently only available for UNIX!") + endif() +endif() + add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) if(BUILD_QSKDLL) @@ -24,33 +48,9 @@ endif() target_link_libraries(${TARGET_NAME} PRIVATE qskinny - Qt5::GuiPrivate) + ${Qt}::GuiPrivate) set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON) -install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/platforminputcontexts) - -# TODO -# pinyin { -# unix -# { -# CONFIG += link_pkgconfig PKGCONFIG += pinyin -# -# HEADERS += QskPinyinTextPredictor.h -# -# SOURCES += QskPinyinTextPredictor.cpp -# } -# } -# -# hunspell { -# unix -# { -# CONFIG += link_pkgconfig PKGCONFIG += hunspell -# -# HEADERS += QskHunspellTextPredictor.h -# -# SOURCES += QskHunspellTextPredictor.cpp -# } -# -# } \ No newline at end of file +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_PLUGINS}/platforminputcontexts) \ No newline at end of file diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt index 75e9f70b..75150bbb 100644 --- a/playground/CMakeLists.txt +++ b/playground/CMakeLists.txt @@ -6,12 +6,12 @@ add_subdirectory(inputpanel) add_subdirectory(images) add_subdirectory(shadows) -# if(TARGET Qt5::WebEngine) # TODO check how to add optionally +# if(TARGET ${Qt}::WebEngine) # TODO check how to add optionally if(TRUE) add_subdirectory(webview) endif() -# if(TARGET Qt5::QuickWidgets) # TODO check how to add optionally +# if(TARGET ${Qt}::QuickWidgets) # TODO check how to add optionally if(TRUE) add_subdirectory(grids) endif() diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt index 3768aa1c..e7bdc1ad 100644 --- a/playground/grids/CMakeLists.txt +++ b/playground/grids/CMakeLists.txt @@ -35,7 +35,7 @@ target_link_libraries(${TARGET_NAME} PRIVATE qskinny qsktestsupport - Qt5::QuickWidgets) + ${Qt}::QuickWidgets) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt index 8bd5b756..b2c83ff5 100644 --- a/playground/webview/CMakeLists.txt +++ b/playground/webview/CMakeLists.txt @@ -10,9 +10,19 @@ add_executable(${TARGET_NAME} target_link_libraries(${TARGET_NAME} PRIVATE qskinny - qsktestsupport - Qt5::WebEngine - Qt5::WebEnginePrivate) + qsktestsupport) + +if (Qt_VERSION_MAJOR VERSION_GREATER "5") + target_link_libraries(${TARGET_NAME} + PRIVATE + ${Qt}::WebEngineQuick + ${Qt}::WebEngineQuickPrivate) +else() + target_link_libraries(${TARGET_NAME} + PRIVATE + ${Qt}::WebEngine + ${Qt}::WebEnginePrivate) +endif() set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/playground/webview/main.cpp b/playground/webview/main.cpp index 454e3639..2e1437fa 100644 --- a/playground/webview/main.cpp +++ b/playground/webview/main.cpp @@ -37,7 +37,10 @@ int main( int argc, char* argv[] ) QskObjectCounter counter( true ); #endif +#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 ) + // namespace QtWebEngine doesn't exist in Qt6: https://doc.qt.io/qt-5/qtwebengine.html QtWebEngine::initialize(); +#endif QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app( argc, argv ); diff --git a/scripts/cmake/qskinny-macros.cmake b/scripts/cmake/qskinny-macros.cmake index b107c169..5ad3c467 100644 --- a/scripts/cmake/qskinny-macros.cmake +++ b/scripts/cmake/qskinny-macros.cmake @@ -1,4 +1,4 @@ -if(TARGET Qt5::Svg) +if(TARGET ${Qt}::Svg) ## @param SVG_FILENAME absolute filename to the svg ## @param QVG_FILENAME absolute filename to the qvg function(svg2qvg SVG_FILENAME QVG_FILENAME) @@ -8,7 +8,7 @@ if(TARGET Qt5::Svg) COMMAND svg2qvg ${SVG_FILENAME} ${QVG_FILENAME} OUTPUT ${QVG_FILENAME} DEPENDS ${SVG_FILENAME} - WORKING_DIRECTORY $ + WORKING_DIRECTORY $ COMMENT "Compiling ${SVG_FILENAME} to ${QVG_FILENAME}") endfunction() endif() \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b8920622..9fd4deb5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,14 +1,6 @@ include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) include(${CMAKE_SOURCE_DIR}/scripts/cmake/qskinny-macros.cmake) -#TODO -#QSK_SUBDIRS = common graphic nodes controls layouts dialogs inputpanel -#INCLUDEPATH *= $${QSK_SUBDIRS} -#DEPENDPATH *= $${QSK_SUBDIRS} - -#CONFIG += pinyin -#CONFIG += hunspell - list(APPEND TARGET_HEADERS common/QskArcMetrics.h common/QskAspect.h @@ -65,7 +57,7 @@ list(APPEND TARGET_SOURCES common/QskTextColors.cpp common/QskTextOptions.cpp) -list(APPEND TARGET_HEADERS #TODO why separate +list(APPEND TARGET_HEADERS graphic/QskColorFilter.h graphic/QskGraphic.h graphic/QskGraphicImageProvider.h @@ -370,41 +362,31 @@ list(APPEND TARGET_SOURCES inputpanel/QskInputPredictionBar.cpp inputpanel/QskVirtualKeyboard.cpp) -#TODO -#pinyin { -# -#unix { -# -#target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) -# -#CONFIG += link_pkgconfig -#PKGCONFIG += pinyin -# -#HEADERS += -#inputpanel/QskPinyinTextPredictor.h -# -#SOURCES += -#inputpanel/QskPinyinTextPredictor.cpp -#} -#} +if(ENABLE_PINYIN) + if(UNIX) + target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) # TODO required? + # TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin + list(APPEND TARGET_HEADERS + inputpanel/QskPinyinTextPredictor.h) -#TODO -#hunspell { -# -#unix { -# -#target_compile_definitions(${TARGET_NAME} PRIVATE HUNSPELL) -# -#CONFIG += link_pkgconfig -#PKGCONFIG += hunspell -# -#HEADERS += -#inputpanel/QskHunspellTextPredictor.h -# -#SOURCES += -#inputpanel/QskHunspellTextPredictor.cpp -#} -#} + list(APPEND TARGET_SOURCES + inputpanel/QskPinyinTextPredictor.cpp) + else() + message(WARNING "Feature 'pinyin' currently only available for UNIX!") + endif() +endif() + +if(ENABLE_HUNSPELL) + if(UNIX) + # TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell + list(APPEND TARGET_HEADERS + inputpanel/QskHunspellTextPredictor.h) + list(APPEND TARGET_SOURCES + inputpanel/QskHunspellTextPredictor.cpp) + else() + message(WARNING "Feature 'hunspell' currently only available for UNIX!") + endif() +endif() set(TARGET_NAME qskinny) @@ -414,10 +396,6 @@ else() add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) endif() -if (Qt5_VERSION_MAJOR VERSION_GREATER "5") - target_link_libraries(${TARGET_NAME} PRIVATE Qt5::Opengl) -endif() - if(BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PUBLIC @@ -438,10 +416,17 @@ target_include_directories(${TARGET_NAME} target_link_libraries(${TARGET_NAME} PUBLIC - Qt5::Core - Qt5::CorePrivate - Qt5::Quick - Qt5::QuickPrivate) + ${Qt}::Core + ${Qt}::CorePrivate + ${Qt}::Quick + ${Qt}::QuickPrivate) + +if (Qt_VERSION_MAJOR VERSION_GREATER "5") + target_link_libraries(${TARGET_NAME} + PUBLIC + ${Qt}::OpenGL + ${Qt}::OpenGLPrivate) +endif() set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/src/common/QskNamespace.h b/src/common/QskNamespace.h index 3f274d12..357246ec 100644 --- a/src/common/QskNamespace.h +++ b/src/common/QskNamespace.h @@ -11,7 +11,11 @@ namespace Qsk { +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + Q_NAMESPACE_EXPORT(QSK_EXPORT) +#else QSK_EXPORT Q_NAMESPACE +#endif enum Direction { diff --git a/src/graphic/QskStandardSymbol.h b/src/graphic/QskStandardSymbol.h index 385ec670..5ead9f49 100644 --- a/src/graphic/QskStandardSymbol.h +++ b/src/graphic/QskStandardSymbol.h @@ -13,7 +13,11 @@ class QskGraphic; namespace QskStandardSymbol { +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + Q_NAMESPACE_EXPORT(QSK_EXPORT) +#else QSK_EXPORT Q_NAMESPACE +#endif enum Type { diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index fbf09b88..bc768dd1 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,3 +1,3 @@ -if(TARGET Qt5::Svg) +if(TARGET ${Qt}::Svg) add_subdirectory(svg2qvg) endif() \ No newline at end of file diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index 87fc8dfe..24c5d369 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -26,14 +26,14 @@ if(BUILD_SVG2QVG_STANDALONE) target_link_libraries(${TARGET_NAME} PRIVATE - Qt5::Gui - Qt5::GuiPrivate - Qt5::Svg) + ${Qt}::Gui + ${Qt}::GuiPrivate + ${Qt}::Svg) else() target_link_libraries(${TARGET_NAME} PRIVATE qskinny - Qt5::Svg) + ${Qt}::Svg) endif() install(TARGETS ${TARGET_NAME} DESTINATION ${TARGET_INSTALL_SUFFIX}) From f6ad56c359001f9040e2e4c671c7d19815672842 Mon Sep 17 00:00:00 2001 From: vrcomputing Date: Fri, 28 Oct 2022 12:56:25 +0200 Subject: [PATCH 20/77] enable cmake action for specific branch --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 3cbbed32..be984901 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -2,7 +2,7 @@ name: CMake Build Matrix on: push: - branches: [ master ] + branches: [ cmake ] pull_request: branches: [ master ] @@ -187,4 +187,4 @@ jobs: # upload_url: ${{ github.event.release.upload_url }} # asset_path: ./${{ matrix.config.artifact }} # asset_name: ${{ matrix.config.artifact }}.zip - # asset_content_type: application/zip \ No newline at end of file + # asset_content_type: application/zip From b75f7ffe22a7bc19b076e14d64122b850d7ce240 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 13:31:17 +0200 Subject: [PATCH 21/77] fix missing path prefix --- inputcontext/CMakeLists.txt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index 8987b5e8..725a1f99 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -1,7 +1,3 @@ -# TODO -# CONFIG += plugin -# CONFIG += qskinny - set(TARGET_NAME qskinputcontext) list(APPEND TARGET_HEADERS @@ -17,9 +13,9 @@ if(ENABLE_PINYIN) if(UNIX) # TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin list(APPEND TARGET_HEADERS - QskPinyinTextPredictor.h) + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h) list(APPEND TARGET_SOURCES - QskPinyinTextPredictor.cpp) + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp) else() message(WARNING "Feature 'pinyin' currently only available for UNIX!") endif() @@ -29,9 +25,9 @@ if(ENABLE_HUNSPELL) if(UNIX) # TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell list(APPEND TARGET_HEADERS - QskHunspellTextPredictor.h) + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h) list(APPEND TARGET_SOURCES - QskHunspellTextPredictor.cpp) + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp) else() message(WARNING "Feature 'hunspell' currently only available for UNIX!") endif() From bf81a07d2a01d501d6bfc46806876e0e478adc07 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 13:31:47 +0200 Subject: [PATCH 22/77] disable pinyin and hunspell by default --- features/qskconfig.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index e1181b60..94ac5835 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -50,8 +50,8 @@ set(OBJECTS_DIR obj) set(RCC_DIR rcc) option(BUILD_QSKDLL "build qskinny as shared library" ON) -option(ENABLE_PINYIN "enable romanization system for standard mandarin chinese" ON) -option(ENABLE_HUNSPELL "enable spell checker" ON) +option(ENABLE_PINYIN "enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config +option(ENABLE_HUNSPELL "enable spell checker" OFF) # TODO try find pkg-config if(UNIX AND NOT APPLE) set(LINUX TRUE) @@ -77,7 +77,7 @@ if(LINUX) # add the Qt module to our includes and therefore don't # need this path. - # TODO + # TODO find solution for all platforms # QMAKE_CXXFLAGS += \ # -isystem $$[QT_INSTALL_HEADERS]/QtCore \ # -isystem $$[QT_INSTALL_HEADERS]/QtCore/$$[QT_VERSION]/QtCore \ From 02909e879f080f1ceabbee552598c729a0c617c2 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 13:32:18 +0200 Subject: [PATCH 23/77] idea for handling Qt5 and Qt6 --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae1d52f7..0bae6aef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,7 @@ endif() if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") else() + # TODO ckeck find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) if(NOT "${Qt5_DIR}" STREQUAL "") find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Quickwidgets Svg Webengine WebengineCore Widgets) set(Qt Qt${Qt5_VERSION_MAJOR}) # TODO find better solution for Qt namespace @@ -87,5 +88,4 @@ add_subdirectory(playground) #doc/*.dox # doc/*.metadox # doc/classes/*.dox -# doc/classes/*.metadox -# TODO \ No newline at end of file +# doc/classes/*.metadox \ No newline at end of file From 37b67d29a3124179fe4eddfd730e0a5693dbe53f Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 13:32:53 +0200 Subject: [PATCH 24/77] try build vs2019 and Qt5 --- .github/workflows/cmake.yml | 158 +++++++++++++++++++++--------------- 1 file changed, 91 insertions(+), 67 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index be984901..a29bfa6d 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -2,9 +2,9 @@ name: CMake Build Matrix on: push: - branches: [ cmake ] + branches: [cmake] pull_request: - branches: [ master ] + branches: [master] jobs: build: @@ -13,69 +13,69 @@ jobs: strategy: fail-fast: false matrix: - config: - - { - name: "Windows Latest MSVC", - os: windows-latest, - artifact: "windows_msvc.7z", - build_type: "Release", - cc: "cl", - cxx: "cl", - environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", - archiver: "7z a", - generators: "Visual Studio 17 2022" - } - - { - name: "Windows 2019 MSVC", - os: windows-2019, - artifact: "windows_msvc.7z", - build_type: "Release", - cc: "cl", - cxx: "cl", - environment_script: "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", - archiver: "7z a", - generators: "Visual Studio 16 2019" - } - - { - name: "Windows Latest MinGW", - os: windows-latest, - artifact: "windows_mingw.7z", - build_type: "Release", - cc: "gcc", - cxx: "g++", - archiver: "7z a", - generators: "Ninja" - } - - { - name: "Ubuntu_Latest_GCC", - os: ubuntu-latest, - artifact: "ubuntu_gcc.7z", - build_type: "Release", - cc: "gcc", - cxx: "g++", - archiver: "7z a", - generators: "Ninja" - } - - { - name: "Ubuntu_GCC_9", - os: ubuntu-latest, - artifact: "ubuntu_gcc9.7z", - build_type: "Release", - cc: "gcc", - cxx: "g++", - archiver: "7z a", - generators: "Ninja" - } - - { - name: "macOS Latest Clang", - os: macos-latest, - artifact: "macos_clang.7z", - build_type: "Release", - cc: "clang", - cxx: "clang++", - archiver: "7za a", - generators: "Ninja" - } + config: + - { + name: "Windows Latest MSVC", + os: windows-latest, + artifact: "windows_msvc.7z", + build_type: "Release", + cc: "cl", + cxx: "cl", + environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", + archiver: "7z a", + generators: "Visual Studio 17 2022", + } + - { + name: "Windows 2019 MSVC", + os: windows-2019, + artifact: "windows_msvc.7z", + build_type: "Release", + cc: "cl", + cxx: "cl", + environment_script: "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", + archiver: "7z a", + generators: "Visual Studio 16 2019", + } + - { + name: "Windows Latest MinGW", + os: windows-latest, + artifact: "windows_mingw.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja", + } + - { + name: "Ubuntu_Latest_GCC", + os: ubuntu-latest, + artifact: "ubuntu_gcc.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja", + } + - { + name: "Ubuntu_GCC_9", + os: ubuntu-latest, + artifact: "ubuntu_gcc9.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja", + } + - { + name: "macOS Latest Clang", + os: macos-latest, + artifact: "macos_clang.7z", + build_type: "Release", + cc: "clang", + cxx: "clang++", + archiver: "7za a", + generators: "Ninja", + } steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it @@ -142,7 +142,30 @@ jobs: brew install p7zip cmake ninja ninja --version cmake --version - + + - uses: actions/checkout@v2 + - name: Cache Qt + id: cache-qt-5-15 + uses: actions/cache@v1 # not v2! + with: + path: ../Qt/5.15.2 # TODO use absolute paths + key: ${{ runner.os }}-QtCache-Qt5 + + - name: Install Qt + uses: jurplel/install-qt-action@v2 + with: + version: "5.15.2" + #host: "windows" + target: "desktop" + #arch: "win64_msvc2019_64" + install-deps: "true" + modules: "qtwebengine" + cached: ${{ steps.cache-qt-5-15.outputs.cache-hit }} + setup-python: "false" + tools: "" + set-env: "true" + tools-only: "false" + - name: Configure shell: bash run: | @@ -153,7 +176,8 @@ jobs: -B . \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ - -DCMAKE_INSTALL_PREFIX:PATH=instdir + -DCMAKE_INSTALL_PREFIX:PATH=instdir \ + -DQt5_DIR:PATH=../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5 - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} From 4b6d6d1bf69f9ce26a780de99d67398e0821a220 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 13:39:13 +0200 Subject: [PATCH 25/77] enable manual workflow --- .github/workflows/cmake.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index a29bfa6d..a6712311 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -5,6 +5,7 @@ on: branches: [cmake] pull_request: branches: [master] + workflow_dispatch: jobs: build: From 2b69ba4befd65b0aebf678d7806ff69843b0c855 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 14:11:33 +0200 Subject: [PATCH 26/77] upgrade to jurplel/install-qt-action@v3 --- .github/workflows/cmake.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index a6712311..e53825f5 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -153,7 +153,7 @@ jobs: key: ${{ runner.os }}-QtCache-Qt5 - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v3 with: version: "5.15.2" #host: "windows" @@ -177,8 +177,7 @@ jobs: -B . \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ - -DCMAKE_INSTALL_PREFIX:PATH=instdir \ - -DQt5_DIR:PATH=../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5 + -DCMAKE_INSTALL_PREFIX:PATH=instdir - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} From bd2a106b069d84f09ea34f84083f565594e0cce3 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 14:18:37 +0200 Subject: [PATCH 27/77] extend manual trigger --- .github/workflows/cmake.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index e53825f5..f5ddc32a 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -6,6 +6,15 @@ on: pull_request: branches: [master] workflow_dispatch: + inputs: + qtversion: + description: 'Select either Qt5 or Qt6' + required: false + default: 'Qt5' + type: choice + options: + - Qt5 + - Qt6 jobs: build: From ae3b6f13e6d7ab093bfe9b4b4035ec0cc37a206b Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 14:27:03 +0200 Subject: [PATCH 28/77] using qt dir from environment variable --- .github/workflows/cmake.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index f5ddc32a..e6ae6341 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -187,6 +187,7 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ -DCMAKE_INSTALL_PREFIX:PATH=instdir + -DQt5_DIR:PATH=%Qt5_DIR% - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} From 06518c03ae30a46767739d0ed6ee0e3719c25368 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 14:39:50 +0200 Subject: [PATCH 29/77] try extending config variables --- .github/workflows/cmake.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index e6ae6341..4c7194c1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -8,13 +8,13 @@ on: workflow_dispatch: inputs: qtversion: - description: 'Select either Qt5 or Qt6' + description: "Select either Qt5 or Qt6" required: false - default: 'Qt5' + default: "Qt5" type: choice options: - - Qt5 - - Qt6 + - Qt5 + - Qt6 jobs: build: @@ -34,6 +34,7 @@ jobs: environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", archiver: "7z a", generators: "Visual Studio 17 2022", + qtcmakedir: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", # TODO find better solution } - { name: "Windows 2019 MSVC", @@ -45,6 +46,7 @@ jobs: environment_script: "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", archiver: "7z a", generators: "Visual Studio 16 2019", + qtcmakedir: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", # TODO find better solution } - { name: "Windows Latest MinGW", @@ -187,7 +189,7 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ -DCMAKE_INSTALL_PREFIX:PATH=instdir - -DQt5_DIR:PATH=%Qt5_DIR% + -DQt5_DIR:PATH=${{ matrix.config.qtcmakedir }} - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} From 9837fe333aae98e0a0ea2df4b26285871001d309 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 28 Oct 2022 14:47:10 +0200 Subject: [PATCH 30/77] fix missing newline --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 4c7194c1..123df2e4 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -188,8 +188,8 @@ jobs: -B . \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ - -DCMAKE_INSTALL_PREFIX:PATH=instdir - -DQt5_DIR:PATH=${{ matrix.config.qtcmakedir }} + -DCMAKE_INSTALL_PREFIX:PATH=instdir \ + -DQt5_DIR:PATH="${{ matrix.config.qtcmakedir }}" - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} From e2c4ffeb224aaa8d4d3a85422f0309ab8f67b7d3 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 17:12:10 +0100 Subject: [PATCH 31/77] add gcc qt cmake dir --- .github/workflows/cmake.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 123df2e4..711a2c25 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -67,6 +67,7 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", + qtcmakedir: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", # TODO find better solution } - { name: "Ubuntu_GCC_9", @@ -77,6 +78,7 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", + qtcmakedir: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", # TODO find better solution } - { name: "macOS Latest Clang", From b4a681f72a53b0e6b0265dd3f619effc75403f03 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 17:17:23 +0100 Subject: [PATCH 32/77] fix camel case --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bae6aef..8f3ebd37 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,14 +41,14 @@ if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") else() # TODO ckeck find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) if(NOT "${Qt5_DIR}" STREQUAL "") - find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Quickwidgets Svg Webengine WebengineCore Widgets) + find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Webengine WebengineCore Widgets) set(Qt Qt${Qt5_VERSION_MAJOR}) # TODO find better solution for Qt namespace set(Qt_VERSION ${Qt5_VERSION}) set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) elseif(NOT "${Qt6_DIR}" STREQUAL "") - find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick Quickwidgets Svg WebEngineCore WebEngineQuick Widgets) + find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg WebEngineCore WebEngineQuick Widgets) set(Qt Qt${Qt6_VERSION_MAJOR}) # TODO find better solution for Qt namespace set(Qt_VERSION ${Qt6_VERSION}) set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) From 032aea3af024ef464ad775be2ccff57e0eb9ec52 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 17:20:16 +0100 Subject: [PATCH 33/77] fix ever more camel case --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f3ebd37..6d16bc6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,7 +41,7 @@ if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") else() # TODO ckeck find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) if(NOT "${Qt5_DIR}" STREQUAL "") - find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Webengine WebengineCore Widgets) + find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg WebEngine WebEngineCore Widgets) set(Qt Qt${Qt5_VERSION_MAJOR}) # TODO find better solution for Qt namespace set(Qt_VERSION ${Qt5_VERSION}) set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) From 8a4307ebaca6645488f7821d856d57dd3712eb6b Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 17:29:10 +0100 Subject: [PATCH 34/77] add qskinny dependency to svg2qvg --- tools/svg2qvg/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index 24c5d369..38eedbe0 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -8,6 +8,11 @@ add_executable(${TARGET_NAME} ${TARGET_SOURCES}) if(BUILD_SVG2QVG_STANDALONE) + # NOTE: when building standalone some moc files are transitively required. + # These files are being created by the qskinny build, hence we add an explicit dependency. + # E.g. main.cpp -> #include -> #include "moc_QskGraphic.cpp" + add_dependencies(${TARGET_NAME} qskinny) + get_target_property(qskinny_AUTOGEN_DIR qskinny AUTOGEN_BUILD_DIR) if (EXISTS ${qskinny_AUTOGEN_DIR}) else() From 48c3bb41b1e827b8a622f7824fc383786e508f92 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 20:19:31 +0100 Subject: [PATCH 35/77] add optional components --- CMakeLists.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d16bc6e..1eb34d0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,17 +39,18 @@ endif() if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") else() - # TODO ckeck find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) if(NOT "${Qt5_DIR}" STREQUAL "") - find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg WebEngine WebEngineCore Widgets) - set(Qt Qt${Qt5_VERSION_MAJOR}) # TODO find better solution for Qt namespace + find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) + find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) + set(Qt Qt${Qt5_VERSION_MAJOR}) set(Qt_VERSION ${Qt5_VERSION}) set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) elseif(NOT "${Qt6_DIR}" STREQUAL "") - find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg WebEngineCore WebEngineQuick Widgets) - set(Qt Qt${Qt6_VERSION_MAJOR}) # TODO find better solution for Qt namespace + find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) + find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) + set(Qt Qt${Qt6_VERSION_MAJOR}) set(Qt_VERSION ${Qt6_VERSION}) set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) From 7449d5fd4bd28a58d9aa552ed07935ccb5fe3d83 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 20:19:51 +0100 Subject: [PATCH 36/77] add check for optional components --- playground/CMakeLists.txt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt index 75150bbb..2e518423 100644 --- a/playground/CMakeLists.txt +++ b/playground/CMakeLists.txt @@ -6,12 +6,18 @@ add_subdirectory(inputpanel) add_subdirectory(images) add_subdirectory(shadows) -# if(TARGET ${Qt}::WebEngine) # TODO check how to add optionally -if(TRUE) - add_subdirectory(webview) +if (Qt_VERSION_MAJOR VERSION_EQUAL "6") + if(TARGET ${Qt}::WebEngineCore) + if(TARGET ${Qt}::WebEngineQuick) + add_subdirectory(webview) + endif() + endif() +elseif(Qt_VERSION VERSION_EQUAL "5") + if(TARGET ${Qt}::WebEngine) + add_subdirectory(webview) + endif() endif() -# if(TARGET ${Qt}::QuickWidgets) # TODO check how to add optionally -if(TRUE) +if(TARGET ${Qt}::QuickWidgets) add_subdirectory(grids) endif() From 39c12987799d4ff8a0e11c231d57de0fe1b6eacd Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 20:21:06 +0100 Subject: [PATCH 37/77] dirty hack for svg2qvg access to qskinny moc files --- src/CMakeLists.txt | 8 +++++++- tools/svg2qvg/CMakeLists.txt | 20 ++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9fd4deb5..09fd642a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -431,7 +431,13 @@ endif() set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON - AUTORCC ON) + AUTORCC ON + FOLDER libs) + +# TODO hack for standalone qvg2svg +set_target_properties(${TARGET_NAME} + PROPERTIES + AUTOGEN_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/qskinny_autogen/include) install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS}) install(FILES ${TARGET_HEADERS} DESTINATION ${QSK_INSTALL_HEADERS}) \ No newline at end of file diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index 38eedbe0..a760879c 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -13,17 +13,25 @@ if(BUILD_SVG2QVG_STANDALONE) # E.g. main.cpp -> #include -> #include "moc_QskGraphic.cpp" add_dependencies(${TARGET_NAME} qskinny) + # TODO hack for standalone qvg2svg get_target_property(qskinny_AUTOGEN_DIR qskinny AUTOGEN_BUILD_DIR) - if (EXISTS ${qskinny_AUTOGEN_DIR}) + if (${qskinny_AUTOGEN_DIR} STREQUAL "") + message(FATAL_ERROR "Directory '${qskinny_AUTOGEN_DIR}' doesn't exist") + endif() + + # TODO fix multi configuration generators + if(CMAKE_GENERATOR MATCHES "Visual Studio.*") + add_definitions("/I${qskinny_AUTOGEN_DIR}/include_\$(Configuration)") else() - set(qskinny_AUTOGEN_DIR ${CMAKE_BINARY_DIR}/src/qskinny_autogen/include_$) # TODO + target_include_directories(${TARGET_NAME} + PRIVATE + ${qskinny_AUTOGEN_DIR}) endif() target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/graphic - ${qskinny_AUTOGEN_DIR}) + ${CMAKE_SOURCE_DIR}/src/graphic) target_compile_definitions(${TARGET_NAME} PRIVATE @@ -41,4 +49,8 @@ else() ${Qt}::Svg) endif() +set_target_properties(${TARGET_NAME} + PROPERTIES + FOLDER tools) + install(TARGETS ${TARGET_NAME} DESTINATION ${TARGET_INSTALL_SUFFIX}) From 5b5c25f6863b3a77832ed4a7369625f9d5fb5efa Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 30 Oct 2022 20:52:48 +0100 Subject: [PATCH 38/77] remove missing and double include --- src/CMakeLists.txt | 2 +- tools/svg2qvg/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 09fd642a..58e41082 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -437,7 +437,7 @@ set_target_properties(${TARGET_NAME} # TODO hack for standalone qvg2svg set_target_properties(${TARGET_NAME} PROPERTIES - AUTOGEN_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/qskinny_autogen/include) + AUTOGEN_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/qskinny_autogen) install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS}) install(FILES ${TARGET_HEADERS} DESTINATION ${QSK_INSTALL_HEADERS}) \ No newline at end of file diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index a760879c..132b1594 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -25,7 +25,7 @@ if(BUILD_SVG2QVG_STANDALONE) else() target_include_directories(${TARGET_NAME} PRIVATE - ${qskinny_AUTOGEN_DIR}) + ${qskinny_AUTOGEN_DIR}/include) endif() target_include_directories(${TARGET_NAME} From 553db796b7125b860a24be2a2a8de895be9ad242 Mon Sep 17 00:00:00 2001 From: vrcomputing Date: Mon, 31 Oct 2022 09:03:39 +0100 Subject: [PATCH 39/77] add macos clang and wingw cmake paths --- .github/workflows/cmake.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 711a2c25..9b02ee16 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -57,6 +57,7 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", + qtcmakedir: "../Qt/5.15.2/mingw81_64/lib/cmake/Qt5", # TODO find better solution } - { name: "Ubuntu_Latest_GCC", @@ -89,6 +90,7 @@ jobs: cxx: "clang++", archiver: "7za a", generators: "Ninja", + qtcmakedir: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", # TODO find better solution } steps: From 74118fd425d132b2f0392622f4f041bf7924d12e Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 11:20:32 +0100 Subject: [PATCH 40/77] removed mingw; add platform delegate step --- .github/workflows/cmake.yml | 62 +++++++++++++++++++------------------ CMakeLists.txt | 10 ++++-- README.md | 2 ++ features/qskconfig.cmake | 2 ++ 4 files changed, 43 insertions(+), 33 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9b02ee16..61674eb1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -5,16 +5,6 @@ on: branches: [cmake] pull_request: branches: [master] - workflow_dispatch: - inputs: - qtversion: - description: "Select either Qt5 or Qt6" - required: false - default: "Qt5" - type: choice - options: - - Qt5 - - Qt6 jobs: build: @@ -25,7 +15,7 @@ jobs: matrix: config: - { - name: "Windows Latest MSVC", + name: "Windows Latest MSVC Qt5", os: windows-latest, artifact: "windows_msvc.7z", build_type: "Release", @@ -37,7 +27,7 @@ jobs: qtcmakedir: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", # TODO find better solution } - { - name: "Windows 2019 MSVC", + name: "Windows 2019 MSVC Qt5", os: windows-2019, artifact: "windows_msvc.7z", build_type: "Release", @@ -49,18 +39,7 @@ jobs: qtcmakedir: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", # TODO find better solution } - { - name: "Windows Latest MinGW", - os: windows-latest, - artifact: "windows_mingw.7z", - build_type: "Release", - cc: "gcc", - cxx: "g++", - archiver: "7z a", - generators: "Ninja", - qtcmakedir: "../Qt/5.15.2/mingw81_64/lib/cmake/Qt5", # TODO find better solution - } - - { - name: "Ubuntu_Latest_GCC", + name: "Ubuntu_Latest_GCC Qt5", os: ubuntu-latest, artifact: "ubuntu_gcc.7z", build_type: "Release", @@ -71,7 +50,7 @@ jobs: qtcmakedir: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", # TODO find better solution } - { - name: "Ubuntu_GCC_9", + name: "Ubuntu_GCC_9 Qt5", os: ubuntu-latest, artifact: "ubuntu_gcc9.7z", build_type: "Release", @@ -82,7 +61,7 @@ jobs: qtcmakedir: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", # TODO find better solution } - { - name: "macOS Latest Clang", + name: "macOS Latest Clang Qt5", os: macos-latest, artifact: "macos_clang.7z", build_type: "Release", @@ -160,20 +139,43 @@ jobs: cmake --version - uses: actions/checkout@v2 + + - name: Version Delegate Qt5 MSVC + if: "endsWith(matrix.config.name, 'Qt5') && contains(matrix.config.name, 'MSVC')" + id: version-delegate + run: | + echo "Qt_VERSION=5.15.2" >> $GITHUB_OUTPUT + echo "Qt_DIR_KEY=Qt5_DIR" >> $GITHUB_OUTPUT + echo "Qt_DIR_VALUE=../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5" >> $GITHUB_OUTPUT + + - name: Version Delegate Qt5 GCC + if: "endsWith(matrix.config.name, 'Qt5') && contains(matrix.config.name, 'GCC')" + id: version-delegate + run: | + echo "Qt_VERSION=5.15.2" >> $GITHUB_OUTPUT + echo "Qt_DIR_KEY=Qt5_DIR" >> $GITHUB_OUTPUT + echo "Qt_DIR_VALUE=../Qt/5.15.2/gcc_64/lib/cmake/Qt5" >> $GITHUB_OUTPUT + + - name: Version Delegate Qt5 Clang + if: "endsWith(matrix.config.name, 'Qt5') && contains(matrix.config.name, 'Clang')" + id: version-delegate + run: | + echo "Qt_VERSION=5.15.2" >> $GITHUB_OUTPUT + echo "Qt_DIR_KEY=Qt5_DIR" >> $GITHUB_OUTPUT + echo "Qt_DIR_VALUE=../Qt/5.15.2/gcc_64/lib/cmake/Qt5" >> $GITHUB_OUTPUT + - name: Cache Qt id: cache-qt-5-15 uses: actions/cache@v1 # not v2! with: - path: ../Qt/5.15.2 # TODO use absolute paths + path: ../Qt/5.15.2 key: ${{ runner.os }}-QtCache-Qt5 - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: "5.15.2" - #host: "windows" target: "desktop" - #arch: "win64_msvc2019_64" install-deps: "true" modules: "qtwebengine" cached: ${{ steps.cache-qt-5-15.outputs.cache-hit }} @@ -193,7 +195,7 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ -DCMAKE_INSTALL_PREFIX:PATH=instdir \ - -DQt5_DIR:PATH="${{ matrix.config.qtcmakedir }}" + -D${{ steps.version-delegate.outputs.Qt_DIR_KEY }}:PATH="${{ steps.version-delegate.outputs.Qt_DIR_VALUE }}" - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 1eb34d0b..86e5379a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,7 @@ else() set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) elseif(NOT "${Qt6_DIR}" STREQUAL "") find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) - find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) + find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) set(Qt Qt${Qt6_VERSION_MAJOR}) set(Qt_VERSION ${Qt6_VERSION}) set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) @@ -80,8 +80,12 @@ add_subdirectory(inputcontext) add_subdirectory(qmlexport) add_subdirectory(tools) add_subdirectory(support) -add_subdirectory(examples) -add_subdirectory(playground) +if(BUILD_EXAMPLES) + add_subdirectory(examples) +endif() +if(BUILD_PLAYGROUND) + add_subdirectory(playground) +endif() #TODO add doxygen support #OTHER_FILES = diff --git a/README.md b/README.md index dcdc8065..553d8778 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ ![](https://github.com/uwerat/qskinny/workflows/CI/badge.svg) +[![CMake Build Matrix](https://github.com/vrcomputing/qskinny/actions/workflows/cmake.yml/badge.svg)](https://github.com/vrcomputing/qskinny/actions/workflows/cmake.yml) + The (Q)Skinny library is a framework built on top of the Qt scene graph and very few core classes from Qt/Quick. It offers a set of lightweight controls, that can be used from C++ and/or QML. diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index 94ac5835..efea946f 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -50,6 +50,8 @@ set(OBJECTS_DIR obj) set(RCC_DIR rcc) option(BUILD_QSKDLL "build qskinny as shared library" ON) +option(BUILD_EXAMPLES "build qskinny examples" ON) +option(BUILD_PLAYGROUND "build qskinny playground" ON) option(ENABLE_PINYIN "enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config option(ENABLE_HUNSPELL "enable spell checker" OFF) # TODO try find pkg-config From 365d09f108ce44b76e2d4278b6821c0abe8bf1a5 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 11:27:49 +0100 Subject: [PATCH 41/77] remove ambigous step --- .github/workflows/cmake.yml | 61 +++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 61674eb1..e0a5a9a5 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -24,7 +24,12 @@ jobs: environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", archiver: "7z a", generators: "Visual Studio 17 2022", - qtcmakedir: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", # TODO find better solution + cmake: + { + qtversion: "5.15.2", + qtdirkey: "Qt5_DIR", + qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", + }, } - { name: "Windows 2019 MSVC Qt5", @@ -36,7 +41,12 @@ jobs: environment_script: "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", archiver: "7z a", generators: "Visual Studio 16 2019", - qtcmakedir: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", # TODO find better solution + cmake: + { + qtversion: "5.15.2", + qtdirkey: "Qt5_DIR", + qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", + }, } - { name: "Ubuntu_Latest_GCC Qt5", @@ -47,7 +57,12 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", - qtcmakedir: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", # TODO find better solution + cmake: + { + qtversion: "5.15.2", + qtdirkey: "Qt5_DIR", + qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", + }, } - { name: "Ubuntu_GCC_9 Qt5", @@ -58,7 +73,12 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", - qtcmakedir: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", # TODO find better solution + cmake: + { + qtversion: "5.15.2", + qtdirkey: "Qt5_DIR", + qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", + }, } - { name: "macOS Latest Clang Qt5", @@ -69,7 +89,12 @@ jobs: cxx: "clang++", archiver: "7za a", generators: "Ninja", - qtcmakedir: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", # TODO find better solution + cmake: + { + qtversion: "5.15.2", + qtdirkey: "Qt5_DIR", + qtdirvalue: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", + }, } steps: @@ -140,30 +165,6 @@ jobs: - uses: actions/checkout@v2 - - name: Version Delegate Qt5 MSVC - if: "endsWith(matrix.config.name, 'Qt5') && contains(matrix.config.name, 'MSVC')" - id: version-delegate - run: | - echo "Qt_VERSION=5.15.2" >> $GITHUB_OUTPUT - echo "Qt_DIR_KEY=Qt5_DIR" >> $GITHUB_OUTPUT - echo "Qt_DIR_VALUE=../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5" >> $GITHUB_OUTPUT - - - name: Version Delegate Qt5 GCC - if: "endsWith(matrix.config.name, 'Qt5') && contains(matrix.config.name, 'GCC')" - id: version-delegate - run: | - echo "Qt_VERSION=5.15.2" >> $GITHUB_OUTPUT - echo "Qt_DIR_KEY=Qt5_DIR" >> $GITHUB_OUTPUT - echo "Qt_DIR_VALUE=../Qt/5.15.2/gcc_64/lib/cmake/Qt5" >> $GITHUB_OUTPUT - - - name: Version Delegate Qt5 Clang - if: "endsWith(matrix.config.name, 'Qt5') && contains(matrix.config.name, 'Clang')" - id: version-delegate - run: | - echo "Qt_VERSION=5.15.2" >> $GITHUB_OUTPUT - echo "Qt_DIR_KEY=Qt5_DIR" >> $GITHUB_OUTPUT - echo "Qt_DIR_VALUE=../Qt/5.15.2/gcc_64/lib/cmake/Qt5" >> $GITHUB_OUTPUT - - name: Cache Qt id: cache-qt-5-15 uses: actions/cache@v1 # not v2! @@ -195,7 +196,7 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ -DCMAKE_INSTALL_PREFIX:PATH=instdir \ - -D${{ steps.version-delegate.outputs.Qt_DIR_KEY }}:PATH="${{ steps.version-delegate.outputs.Qt_DIR_VALUE }}" + -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} From b37a812445b2aae19243d4e91c2060a9220f21e7 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 11:39:26 +0100 Subject: [PATCH 42/77] added qt6 config --- .github/workflows/cmake.yml | 45 +++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index e0a5a9a5..ab6c890a 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -48,6 +48,23 @@ jobs: qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", }, } + - { + name: "Windows 2019 MSVC Qt6", + os: windows-2019, + artifact: "windows_msvc.7z", + build_type: "Release", + cc: "cl", + cxx: "cl", + environment_script: "C:/Program Files/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", + archiver: "7z a", + generators: "Visual Studio 16 2019", + cmake: + { + qtversion: "6.2.4", + qtdirkey: "Qt6_DIR", + qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", + }, + } - { name: "Ubuntu_Latest_GCC Qt5", os: ubuntu-latest, @@ -165,14 +182,24 @@ jobs: - uses: actions/checkout@v2 - - name: Cache Qt + - name: Cache Qt5 + if: endsWith(matrix.config.name, 'Qt5') id: cache-qt-5-15 uses: actions/cache@v1 # not v2! with: path: ../Qt/5.15.2 key: ${{ runner.os }}-QtCache-Qt5 - - name: Install Qt + - name: Cache Qt6 + if: endsWith(matrix.config.name, 'Qt6') + id: cache-qt-6-2 + uses: actions/cache@v1 # not v2! + with: + path: ../Qt/6.2.4 + key: ${{ runner.os }}-QtCache-Qt6 + + - name: Install Qt5 + if: endsWith(matrix.config.name, 'Qt5') uses: jurplel/install-qt-action@v3 with: version: "5.15.2" @@ -185,6 +212,20 @@ jobs: set-env: "true" tools-only: "false" + - name: Install Qt6 + if: endsWith(matrix.config.name, 'Qt6') + uses: jurplel/install-qt-action@v3 + with: + version: "6.2.4" + target: "desktop" + install-deps: "true" + modules: "qtwebengine" + cached: ${{ steps.cache-qt-6-2.outputs.cache-hit }} + setup-python: "false" + tools: "" + set-env: "true" + tools-only: "false" + - name: Configure shell: bash run: | From 5af88cb767b5d2d8e8970af4d5c46093b13bd541 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 11:48:41 +0100 Subject: [PATCH 43/77] add qt6 for all platforms --- .github/workflows/cmake.yml | 65 +++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index ab6c890a..745992b4 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -31,6 +31,23 @@ jobs: qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", }, } + - { + name: "Windows Latest MSVC Qt6", + os: windows-latest, + artifact: "windows_msvc.7z", + build_type: "Release", + cc: "cl", + cxx: "cl", + environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", + archiver: "7z a", + generators: "Visual Studio 17 2022", + cmake: + { + qtversion: "6.2.4", + qtdirkey: "Qt6_DIR", + qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", + }, + } - { name: "Windows 2019 MSVC Qt5", os: windows-2019, @@ -81,6 +98,22 @@ jobs: qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", }, } + - { + name: "Ubuntu_Latest_GCC Qt6", + os: ubuntu-latest, + artifact: "ubuntu_gcc.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja", + cmake: + { + qtversion: "6.2.4", + qtdirkey: "Qt6_DIR", + qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", + }, + } - { name: "Ubuntu_GCC_9 Qt5", os: ubuntu-latest, @@ -97,6 +130,22 @@ jobs: qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", }, } + - { + name: "Ubuntu_GCC_9 Qt6", + os: ubuntu-latest, + artifact: "ubuntu_gcc9.7z", + build_type: "Release", + cc: "gcc", + cxx: "g++", + archiver: "7z a", + generators: "Ninja", + cmake: + { + qtversion: "6.2.4", + qtdirkey: "Qt6_DIR", + qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", + }, + } - { name: "macOS Latest Clang Qt5", os: macos-latest, @@ -113,6 +162,22 @@ jobs: qtdirvalue: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", }, } + - { + name: "macOS Latest Clang Qt6", + os: macos-latest, + artifact: "macos_clang.7z", + build_type: "Release", + cc: "clang", + cxx: "clang++", + archiver: "7za a", + generators: "Ninja", + cmake: + { + qtversion: "6.2.4", + qtdirkey: "Qt6_DIR", + qtdirvalue: "../Qt/6.2.4/clang_64/lib/cmake/Qt6", + }, + } steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it From 747e9e94597fe2f4d9c60a888f7ea9f5b57ddc8d Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 12:00:33 +0100 Subject: [PATCH 44/77] unify config naming --- .github/workflows/cmake.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 745992b4..948106c2 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -83,7 +83,7 @@ jobs: }, } - { - name: "Ubuntu_Latest_GCC Qt5", + name: "Ubuntu Latest GCC Qt5", os: ubuntu-latest, artifact: "ubuntu_gcc.7z", build_type: "Release", @@ -99,7 +99,7 @@ jobs: }, } - { - name: "Ubuntu_Latest_GCC Qt6", + name: "Ubuntu Latest GCC Qt6", os: ubuntu-latest, artifact: "ubuntu_gcc.7z", build_type: "Release", @@ -115,7 +115,7 @@ jobs: }, } - { - name: "Ubuntu_GCC_9 Qt5", + name: "Ubuntu GCC 9 Qt5", os: ubuntu-latest, artifact: "ubuntu_gcc9.7z", build_type: "Release", @@ -131,7 +131,7 @@ jobs: }, } - { - name: "Ubuntu_GCC_9 Qt6", + name: "Ubuntu GCC 9 Qt6", os: ubuntu-latest, artifact: "ubuntu_gcc9.7z", build_type: "Release", From d7694bc977bec8b4740cfd9d431f6b2b9df4f532 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 15:21:43 +0100 Subject: [PATCH 45/77] define CMAKE_PREFIX_PATH --- .github/workflows/cmake.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 948106c2..b4ebc21c 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -29,6 +29,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", + qtprefixdir: "../Qt/5.15.2/msvc2019_64", }, } - { @@ -46,6 +47,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", + qtprefixdir: "../Qt/6.2.4/msvc2019_64", }, } - { @@ -63,6 +65,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", + qtprefixdir: "../Qt/5.15.2/msvc2019_64", }, } - { @@ -80,6 +83,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", + qtprefixdir: "../Qt/6.2.4/msvc2019_64", }, } - { @@ -94,8 +98,9 @@ jobs: cmake: { qtversion: "5.15.2", - qtdirkey: "Qt5_DIR", + qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", + qtprefixdir: "../Qt/5.15.2/gcc_64", }, } - { @@ -112,6 +117,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", + qtprefixdir: "../Qt/6.2.4/gcc_64", }, } - { @@ -128,6 +134,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", + qtprefixdir: "../Qt/5.15.2/gcc_64", }, } - { @@ -144,6 +151,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", + qtprefixdir: "../Qt/6.2.4/gcc_64", }, } - { @@ -160,6 +168,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", + qtprefixdir: "../Qt/5.15.2/clang_64", }, } - { @@ -176,6 +185,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/clang_64/lib/cmake/Qt6", + qtprefixdir: "../Qt/6.2.4/clang_64", }, } @@ -302,6 +312,7 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ -DCMAKE_INSTALL_PREFIX:PATH=instdir \ + -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixdir }}" \ -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" - name: Build shell: bash From 60d7b27333a23b87a6662b90d48daa26543d2ab0 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 15:28:25 +0100 Subject: [PATCH 46/77] change order of arguments --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index b4ebc21c..d842389f 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -309,8 +309,8 @@ jobs: cmake \ -S . \ -B . \ - -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -G "${{ matrix.config.generators }}" \ + -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_INSTALL_PREFIX:PATH=instdir \ -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixdir }}" \ -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" From 8b7f82d1c0f47514ba6a5218e2782ba82b5bab1e Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 15:37:58 +0100 Subject: [PATCH 47/77] manually fix prefix path --- .github/workflows/cmake.yml | 13 +------------ CMakeLists.txt | 4 ++++ 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index d842389f..0b4d6cad 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -29,7 +29,6 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", - qtprefixdir: "../Qt/5.15.2/msvc2019_64", }, } - { @@ -47,7 +46,6 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", - qtprefixdir: "../Qt/6.2.4/msvc2019_64", }, } - { @@ -65,7 +63,6 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", - qtprefixdir: "../Qt/5.15.2/msvc2019_64", }, } - { @@ -83,7 +80,6 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", - qtprefixdir: "../Qt/6.2.4/msvc2019_64", }, } - { @@ -98,9 +94,8 @@ jobs: cmake: { qtversion: "5.15.2", - qtdirkey: "Qt5_DIR", + qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", - qtprefixdir: "../Qt/5.15.2/gcc_64", }, } - { @@ -117,7 +112,6 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", - qtprefixdir: "../Qt/6.2.4/gcc_64", }, } - { @@ -134,7 +128,6 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", - qtprefixdir: "../Qt/5.15.2/gcc_64", }, } - { @@ -151,7 +144,6 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", - qtprefixdir: "../Qt/6.2.4/gcc_64", }, } - { @@ -168,7 +160,6 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", - qtprefixdir: "../Qt/5.15.2/clang_64", }, } - { @@ -185,7 +176,6 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/clang_64/lib/cmake/Qt6", - qtprefixdir: "../Qt/6.2.4/clang_64", }, } @@ -312,7 +302,6 @@ jobs: -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_INSTALL_PREFIX:PATH=instdir \ - -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixdir }}" \ -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" - name: Build shell: bash diff --git a/CMakeLists.txt b/CMakeLists.txt index 86e5379a..4bcc68b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,10 @@ else() set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) elseif(NOT "${Qt6_DIR}" STREQUAL "") + + string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") + set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) + find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) set(Qt Qt${Qt6_VERSION_MAJOR}) From 9beaa2ed589ef62f09224baaad4cbde45dae200f Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 15:42:05 +0100 Subject: [PATCH 48/77] fix dependency rules --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 0b4d6cad..63f7a18c 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -196,7 +196,7 @@ jobs: # cmd "${{ matrix.config.environment_script }}" - name: Install dependencies on ubuntu - if: startsWith(matrix.config.name, 'Ubuntu_Latest_GCC') + if: startsWith(matrix.config.name, 'Ubuntu Latest GCC') run: | sudo apt-get update sudo apt-get install ninja-build cmake @@ -204,7 +204,7 @@ jobs: cmake --version gcc --version - name: Install dependencies on ubuntu9 - if: startsWith(matrix.config.name, 'Ubuntu_GCC_9') + if: startsWith(matrix.config.name, 'Ubuntu GCC 9') run: | echo Update gcc-9 ======================================================================= echo gcc version before From b27bfe6f02b5b3be880137298b20ec1f12ee4b65 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 31 Oct 2022 15:51:20 +0100 Subject: [PATCH 49/77] install libxkbcommon-dev --- .github/workflows/cmake.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 63f7a18c..e81e1af7 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -245,6 +245,10 @@ jobs: ninja --version cmake --version + - name: Install needed xkbcommon symlink + if: startsWith(matrix.config.name, 'Ubuntu') && endsWith(matrix.config.name, 'Qt6') + run: sudo apt-get install libxkbcommon-dev -y + - uses: actions/checkout@v2 - name: Cache Qt5 From c09cf8e9c7a5738c800fd7b84af6b95acc1fe8cb Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Tue, 1 Nov 2022 16:51:26 +0100 Subject: [PATCH 50/77] cmake find package; font config; clang tidy 10 --- .clang-format | 11 ++- CMakeLists.txt | 97 ++++++++++++++----- cmake/QSkinnyConfig.cmake | 2 + .../QSkinnyMacros.cmake | 2 +- examples/qvgviewer/CMakeLists.txt | 18 ++-- features/qskconfig.cmake | 18 ++-- skins/material3/CMakeLists.txt | 2 +- skins/squiek/CMakeLists.txt | 2 +- src/CMakeLists.txt | 24 ++--- support/CMakeLists.txt | 41 +++----- support/fonts.conf.cmake.in | 6 ++ tools/svg2qvg/CMakeLists.txt | 5 +- 12 files changed, 136 insertions(+), 92 deletions(-) create mode 100644 cmake/QSkinnyConfig.cmake rename scripts/cmake/qskinny-macros.cmake => cmake/QSkinnyMacros.cmake (90%) create mode 100644 support/fonts.conf.cmake.in diff --git a/.clang-format b/.clang-format index e33eb0e1..4dfac7ad 100644 --- a/.clang-format +++ b/.clang-format @@ -91,10 +91,12 @@ PenaltyBreakString: 1000 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Left -RawStringFormats: - - Delimiter: pb - Language: TextProto - BasedOnStyle: google +RawStringFormats: + - Language: TextProto + Delimiters: + - 'pb' + - 'proto' + BasedOnStyle: google ReflowComments: true SortIncludes: true SortUsingDeclarations: true @@ -112,5 +114,6 @@ SpacesInSquareBrackets: true Standard: Cpp11 TabWidth: 4 UseTab: Never +UseCRLF: Always ... diff --git a/CMakeLists.txt b/CMakeLists.txt index 4bcc68b5..1abea989 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16.3) -project(qskinny VERSION 999.99.9) # TODO get from git branch name or +project(QSkinny VERSION 999.99.9) # TODO get from git branch name or set_property(GLOBAL PROPERTY USE_FOLDERS ON) @@ -36,30 +36,26 @@ else() endif() endif() -if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") - message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") -else() - if(NOT "${Qt5_DIR}" STREQUAL "") - find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) - find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) - set(Qt Qt${Qt5_VERSION_MAJOR}) - set(Qt_VERSION ${Qt5_VERSION}) - set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) - set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) - set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) - elseif(NOT "${Qt6_DIR}" STREQUAL "") +if(NOT "${Qt5_DIR}" STREQUAL "") + find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) + find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) + set(Qt Qt${Qt5_VERSION_MAJOR}) + set(Qt_VERSION ${Qt5_VERSION}) + set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) + set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) + set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) +elseif(NOT "${Qt6_DIR}" STREQUAL "") - string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) + string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") + set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) - find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) - find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) - set(Qt Qt${Qt6_VERSION_MAJOR}) - set(Qt_VERSION ${Qt6_VERSION}) - set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) - set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) - set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) - endif() + find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) + find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) + set(Qt Qt${Qt6_VERSION_MAJOR}) + set(Qt_VERSION ${Qt6_VERSION}) + set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) + set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) + set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) endif() if(TRUE) @@ -70,7 +66,6 @@ if(TRUE) endif() # define install directories - set(QSK_INSTALL_DOCS doc) set(QSK_INSTALL_HEADERS include) set(QSK_INSTALL_LIBS lib) @@ -78,6 +73,15 @@ set(QSK_INSTALL_BINS bin) set(QSK_INSTALL_PLUGINS plugins) set(QSK_INSTALL_EXAMPLES examples) +# define debug postfix globally +set(CMAKE_DEBUG_POSTFIX d) +# define binary install directory globally +set(CMAKE_INSTALL_BINDIR ${QSK_INSTALL_BINS}$<$:/debug>) +# define library install directory globally +# set(CMAKE_INSTALL_LIBDIR lib$<$:/debug>) +# define install rpath globally +set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${QSK_INSTALL_LIBS}) + add_subdirectory(src) add_subdirectory(skins) add_subdirectory(inputcontext) @@ -97,4 +101,47 @@ endif() #doc/*.dox # doc/*.metadox # doc/classes/*.dox -# doc/classes/*.metadox \ No newline at end of file +# doc/classes/*.metadox + +set(PACKAGE_NAME ${PROJECT_NAME}) +set(PACKAGE_VERSION ${CMAKE_PROJECT_VERSION}) +set(PACKAGE_NAMESPACE Qsk) +set(PACKAGE_LOCATION lib/cmake/${PROJECT_NAME}) + +install(TARGETS qskinny EXPORT ${PACKAGE_NAME}Targets + LIBRARY DESTINATION ${QSK_INSTALL_LIBS} + ARCHIVE DESTINATION ${QSK_INSTALL_LIBS} + RUNTIME DESTINATION ${QSK_INSTALL_LIBS} + INCLUDES DESTINATION ${QSK_INSTALL_HEADERS}) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}ConfigVersion.cmake + VERSION ${PACKAGE_VERSION} + COMPATIBILITY AnyNewerVersion) + +export(EXPORT ${PACKAGE_NAME}Targets + FILE ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}Targets.cmake + NAMESPACE ${PACKAGE_NAMESPACE}::) + +configure_file(cmake/${PACKAGE_NAME}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}Config.cmake + COPYONLY) + +install(EXPORT ${PACKAGE_NAME}Targets + FILE + ${PACKAGE_NAME}Targets.cmake + NAMESPACE + ${PACKAGE_NAMESPACE}:: + DESTINATION + ${PACKAGE_LOCATION}) + +install( + FILES + cmake/${PACKAGE_NAME}Config.cmake + cmake/${PACKAGE_NAME}Macros.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}ConfigVersion.cmake + DESTINATION + ${PACKAGE_LOCATION} + COMPONENT + Devel) \ No newline at end of file diff --git a/cmake/QSkinnyConfig.cmake b/cmake/QSkinnyConfig.cmake new file mode 100644 index 00000000..8bb2b05b --- /dev/null +++ b/cmake/QSkinnyConfig.cmake @@ -0,0 +1,2 @@ +include("${CMAKE_CURRENT_LIST_DIR}/QSkinnyTargets.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/QSkinnyMacros.cmake") \ No newline at end of file diff --git a/scripts/cmake/qskinny-macros.cmake b/cmake/QSkinnyMacros.cmake similarity index 90% rename from scripts/cmake/qskinny-macros.cmake rename to cmake/QSkinnyMacros.cmake index 5ad3c467..d332b82b 100644 --- a/scripts/cmake/qskinny-macros.cmake +++ b/cmake/QSkinnyMacros.cmake @@ -1,7 +1,7 @@ if(TARGET ${Qt}::Svg) ## @param SVG_FILENAME absolute filename to the svg ## @param QVG_FILENAME absolute filename to the qvg - function(svg2qvg SVG_FILENAME QVG_FILENAME) + function(qsk_svg2qvg SVG_FILENAME QVG_FILENAME) get_filename_component(QVG_FILENAME ${QVG_FILENAME} ABSOLUTE) get_filename_component(SVG_FILENAME ${SVG_FILENAME} ABSOLUTE) add_custom_command( diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index c51d756b..64b56cf2 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -39,17 +39,15 @@ target_link_libraries(${TARGET_NAME} qskinny qsktestsupport) -option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF) - if(ENABLE_AUTOQVG) - svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.01.10.svg - ${CMAKE_CURRENT_LIST_DIR}/qvg/01.01.10.qvg) - svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.03.04q.svg - ${CMAKE_CURRENT_LIST_DIR}/qvg/01.03.04q.qvg) - svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.08.05q.svg - ${CMAKE_CURRENT_LIST_DIR}/qvg/01.08.05q.qvg) - svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.25.18.svg - ${CMAKE_CURRENT_LIST_DIR}/qvg/01.25.18.qvg) + qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.01.10.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.01.10.qvg) + qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.03.04q.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.03.04q.qvg) + qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.08.05q.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.08.05q.qvg) + qsk_svg2qvg(${CMAKE_CURRENT_LIST_DIR}/svg/01.25.18.svg + ${CMAKE_CURRENT_LIST_DIR}/qvg/01.25.18.qvg) else() # When cross compiling we need to have the svg2qvg tool being # compiled for the build environment - not for the one of the target. diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index efea946f..6201645e 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -45,15 +45,15 @@ list(APPEND CONFIG hide_symbols) # } # } -set(MOC_DIR moc) -set(OBJECTS_DIR obj) -set(RCC_DIR rcc) - -option(BUILD_QSKDLL "build qskinny as shared library" ON) -option(BUILD_EXAMPLES "build qskinny examples" ON) -option(BUILD_PLAYGROUND "build qskinny playground" ON) -option(ENABLE_PINYIN "enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config -option(ENABLE_HUNSPELL "enable spell checker" OFF) # TODO try find pkg-config +option(BUILD_QSKDLL "Build qskinny as shared library" ON) +option(BUILD_EXAMPLES "Build qskinny examples" ON) +option(BUILD_PLAYGROUND "Build qskinny playground" ON) +option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) +option(ENABLE_PINYIN "Enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config +option(ENABLE_HUNSPELL "Enable spell checker" OFF) # TODO try find pkg-config +option(ENABLE_FONT_CONFIG "Enable font config for font caching" ON) +option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) +option(ENABLE_AUTOQVG "enable automatic qvg compilation" ON) if(UNIX AND NOT APPLE) set(LINUX TRUE) diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index c117b02e..0fdf9d79 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -15,7 +15,7 @@ list(APPEND TARGET_OTHER_FILES metadata.json) if(BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) # TODO remove lib files during installation? else() add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) endif() diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index 47c120e3..e5695dbc 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -15,7 +15,7 @@ list(APPEND TARGET_OTHER_FILES metadata.json) if(BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) # TODO remove lib files during installation? else() add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 58e41082..100bbf1a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,5 @@ include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) -include(${CMAKE_SOURCE_DIR}/scripts/cmake/qskinny-macros.cmake) +include(${CMAKE_SOURCE_DIR}/cmake/QSkinnyMacros.cmake) list(APPEND TARGET_HEADERS common/QskArcMetrics.h @@ -406,13 +406,18 @@ endif() target_include_directories(${TARGET_NAME} PUBLIC - common - graphic - nodes - controls - layouts - dialogs - inputpanel) + $ + $ + $ + $ + $ + $ + $ + $) + +target_include_directories(${TARGET_NAME} + INTERFACE + $) target_link_libraries(${TARGET_NAME} PUBLIC @@ -438,6 +443,3 @@ set_target_properties(${TARGET_NAME} set_target_properties(${TARGET_NAME} PROPERTIES AUTOGEN_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/qskinny_autogen) - -install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS}) -install(FILES ${TARGET_HEADERS} DESTINATION ${QSK_INSTALL_HEADERS}) \ No newline at end of file diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 31d853fb..11b43ce0 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -1,8 +1,3 @@ -# TODO -# CONFIG += ensure_skins -# CONFIG += fontconfig -# CONFIG += qskinny - list(APPEND TARGET_HEADERS SkinnyGlobal.h SkinnyNamespace.h @@ -16,24 +11,6 @@ list(APPEND TARGET_SOURCES SkinnyShapeProvider.cpp SkinnyShortcut.cpp) -# TODO -#fontconfig{ -# -# QSK_FONTDIR = $${PWD} / fonts QSK_FONTCACHEDIR = -# $${OUT_PWD} / fontconfig QSK_FONTCONF_FILE = -# $${QSK_FONTCACHEDIR} / fonts.conf -# -# QSK_FONTCONF_DATA = -# "$$cat($${PWD}/fonts.conf.in, false)" QSK_FONTCONF_DATA = $$replace( -# QSK_FONTCONF_DATA, FONTCACHEDIR, $${QSK_FONTCACHEDIR}) -# QSK_FONTCONF_DATA = $$replace( -# QSK_FONTCONF_DATA, FONTDIR, $${QSK_FONTDIR}) -# write_file($${QSK_FONTCONF_FILE}, QSK_FONTCONF_DATA) -# -# DEFINES += -# FONTCONFIG_FILE = $$clean_path($$QSK_FONTCONF_FILE) -#} - set(TARGET_NAME qsktestsupport) if (BUILD_QSKDLL) @@ -42,6 +19,20 @@ else() add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS}) endif() +if(ENABLE_FONT_CONFIG) + set(QSK_FONTDIR ${CMAKE_CURRENT_LIST_DIR}/fonts) + set(QSK_FONTCACHEDIR ${CMAKE_CURRENT_BINARY_DIR}/fontconfig) + set(QSK_FONTCONF_FILE ${QSK_FONTCACHEDIR}/fonts.conf) + + configure_file(fonts.conf.cmake.in ${QSK_FONTCONF_FILE} + @ONLY + NEWLINE_STYLE LF) + + target_compile_definitions(${TARGET_NAME} + PRIVATE + FONTCONFIG_FILE=${QSK_FONTCONF_FILE}) +endif() + set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON) @@ -57,14 +48,12 @@ endif() target_compile_definitions(${TARGET_NAME} PRIVATE - PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) + PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) # TODO this'll work only locally since CMAKE_INSTALL_PREFIX is an absolute path target_include_directories(${TARGET_NAME} PUBLIC ${CMAKE_CURRENT_LIST_DIR}) -option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) - if(ENABLE_ENSURE_SKINS) target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/skins) target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) diff --git a/support/fonts.conf.cmake.in b/support/fonts.conf.cmake.in new file mode 100644 index 00000000..501a1fa0 --- /dev/null +++ b/support/fonts.conf.cmake.in @@ -0,0 +1,6 @@ + + + + @QSK_FONTDIR@ + @QSK_FONTCACHEDIR@/cache + diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index 132b1594..cd2f559d 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -1,9 +1,6 @@ set(TARGET_NAME svg2qvg) -set(TARGET_INSTALL_SUFFIX bin/tools) set(TARGET_SOURCES main.cpp) -option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) - add_executable(${TARGET_NAME} ${TARGET_SOURCES}) if(BUILD_SVG2QVG_STANDALONE) @@ -53,4 +50,4 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER tools) -install(TARGETS ${TARGET_NAME} DESTINATION ${TARGET_INSTALL_SUFFIX}) +install(TARGETS ${TARGET_NAME}) From fe345a7c79252ec22609e2eaf78a246249b87e00 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Wed, 2 Nov 2022 09:18:23 +0100 Subject: [PATCH 51/77] add display environment variable --- .github/workflows/cmake.yml | 6 +++++- CMakeLists.txt | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index e81e1af7..61107c5e 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -20,7 +20,7 @@ jobs: artifact: "windows_msvc.7z", build_type: "Release", cc: "cl", - cxx: "cl", + cxx: "cl", environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", archiver: "7z a", generators: "Visual Studio 17 2022", @@ -91,6 +91,7 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", + env: { DISPLAY: ":1" }, cmake: { qtversion: "5.15.2", @@ -107,6 +108,7 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", + env: { DISPLAY: ":1" }, cmake: { qtversion: "6.2.4", @@ -123,6 +125,7 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", + env: { DISPLAY: ":1" }, cmake: { qtversion: "5.15.2", @@ -139,6 +142,7 @@ jobs: cxx: "g++", archiver: "7z a", generators: "Ninja", + env: { DISPLAY: ":1" }, cmake: { qtversion: "6.2.4", diff --git a/CMakeLists.txt b/CMakeLists.txt index 1abea989..99d35c38 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,7 +80,7 @@ set(CMAKE_INSTALL_BINDIR ${QSK_INSTALL_BINS}$<$:/debug>) # define library install directory globally # set(CMAKE_INSTALL_LIBDIR lib$<$:/debug>) # define install rpath globally -set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${QSK_INSTALL_LIBS}) +# set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${QSK_INSTALL_LIBS}) add_subdirectory(src) add_subdirectory(skins) From c6087845a49b985d804148330cb11a9e5d3f9946 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Wed, 2 Nov 2022 09:26:43 +0100 Subject: [PATCH 52/77] disable auto qvg --- features/qskconfig.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index 6201645e..c618bb16 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -53,7 +53,7 @@ option(ENABLE_PINYIN "Enable romanization system for standard mandari option(ENABLE_HUNSPELL "Enable spell checker" OFF) # TODO try find pkg-config option(ENABLE_FONT_CONFIG "Enable font config for font caching" ON) option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) -option(ENABLE_AUTOQVG "enable automatic qvg compilation" ON) +option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF) if(UNIX AND NOT APPLE) set(LINUX TRUE) From 92a475f3352b7a70391843f8a66c8f63e60e7324 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 3 Nov 2022 16:48:04 +0100 Subject: [PATCH 53/77] pkg_check_modules hunspell and pinyin --- .github/workflows/cmake.yml | 17 ++++++++++-- CMakeLists.txt | 20 ++++++++++++++ cmake/QSkinnyOptionalHunspell.cmake | 20 ++++++++++++++ cmake/QSkinnyOptionalPinyin.cmake | 20 ++++++++++++++ features/qskconfig.cmake | 4 +-- inputcontext/CMakeLists.txt | 38 +++++++++++++------------- src/CMakeLists.txt | 41 ++++++++++++++++------------- 7 files changed, 119 insertions(+), 41 deletions(-) create mode 100644 cmake/QSkinnyOptionalHunspell.cmake create mode 100644 cmake/QSkinnyOptionalPinyin.cmake diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 61107c5e..73fcb512 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -20,7 +20,7 @@ jobs: artifact: "windows_msvc.7z", build_type: "Release", cc: "cl", - cxx: "cl", + cxx: "cl", environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", archiver: "7z a", generators: "Visual Studio 17 2022", @@ -299,6 +299,16 @@ jobs: set-env: "true" tools-only: "false" + - name: Install hunspell for Ubuntu + if: startsWith(matrix.config.name, 'Ubuntu') + run: | + sudo apt-get install -y libhunspell-dev + + - name: Install pinyin for Ubuntu + if: startsWith(matrix.config.name, 'Ubuntu') + run: | + sudo apt-get install -y libimepinyin-dev + - name: Configure shell: bash run: | @@ -310,7 +320,10 @@ jobs: -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_INSTALL_PREFIX:PATH=instdir \ - -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" + -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \ + -DENABLE_HUNSPELL:BOOL=ON \ + -DENABLE_PINYIN:BOOL=ON + - name: Build shell: bash run: cmake --build . --config ${{ matrix.config.build_type }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 99d35c38..80b552b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,26 @@ elseif(NOT "${Qt6_DIR}" STREQUAL "") set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) endif() +# optional package hunspell +if(NOT UNIX AND ENABLE_HUNSPELL) + message(WARNING "Feature 'hunspell' only available for UNIX!") + unset(ENABLE_HUNSPELL CACHE) +endif() + +# optional package pinyin +if(NOT UNIX AND ENABLE_PINYIN) + message(WARNING "Feature 'pinyin' only available for UNIX!") + unset(ENABLE_PINYIN CACHE) +endif() + +if(ENABLE_HUNSPELL) + include(cmake/QSkinnyOptionalHunspell.cmake) +endif() + +if(ENABLE_PINYIN) + include(cmake/QSkinnyOptionalPinyin.cmake) +endif() + if(TRUE) message(STATUS "\${Qt} : ${Qt}") message(STATUS "\${Qt_VERSION_MAJOR}: ${Qt_VERSION_MAJOR}") diff --git a/cmake/QSkinnyOptionalHunspell.cmake b/cmake/QSkinnyOptionalHunspell.cmake new file mode 100644 index 00000000..3b382be0 --- /dev/null +++ b/cmake/QSkinnyOptionalHunspell.cmake @@ -0,0 +1,20 @@ +find_package(PkgConfig) +pkg_check_modules(PKG_HUNSPELL QUIET hunspell) +find_path(HUNSPELL_INCLUDE_DIRS + NAMES hunspell.hxx + PATH_SUFFIXES hunspell + HINTS ${PKG_HUNSPELL_INCLUDE_DIRS}) +find_library(HUNSPELL_LIBRARIES + NAMES ${PKG_HUNSPELL_LIBRARIES} hunspell hunspell-1.8 hunspell-1.7 hunspell-1.6 libhunspell + HINTS ${PKG_HUNSPELL_LIBRARY_DIRS}) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(HUNSPELL + REQUIRED_VARS HUNSPELL_LIBRARIES HUNSPELL_INCLUDE_DIRS + VERSION_VAR PKG_HUNSPELL_VERSION) +mark_as_advanced(HUNSPELL_INCLUDE_DIRS HUNSPELL_LIBRARIES) + +add_library(hunspell SHARED IMPORTED GLOBAL) +set_target_properties(hunspell PROPERTIES IMPORTED_LOCATION ${HUNSPELL_LIBRARIES}) +target_include_directories(hunspell + INTERFACE + ${HUNSPELL_INCLUDE_DIRS}) \ No newline at end of file diff --git a/cmake/QSkinnyOptionalPinyin.cmake b/cmake/QSkinnyOptionalPinyin.cmake new file mode 100644 index 00000000..1192d517 --- /dev/null +++ b/cmake/QSkinnyOptionalPinyin.cmake @@ -0,0 +1,20 @@ +find_package(PkgConfig) +pkg_check_modules(PKG_PINYIN QUIET pinyin) +find_path(PINYIN_INCLUDE_DIRS + NAMES pinyinime.h + PATH_SUFFIXES pinyin LibIME/libime/pinyin + HINTS ${PKG_PINYIN_INCLUDE_DIRS}) +find_library(PINYIN_LIBRARIES + NAMES ${PKG_PINYIN_LIBRARIES} IMEPinyin imepinyin ime libime libimepinyin + HINTS ${PKG_PINYIN_LIBRARY_DIRS}) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PINYIN + REQUIRED_VARS PINYIN_LIBRARIES PINYIN_INCLUDE_DIRS + VERSION_VAR PKG_PINYIN_VERSION) +mark_as_advanced(PINYIN_INCLUDE_DIRS PINYIN_LIBRARIES) + +add_library(pinyin SHARED IMPORTED GLOBAL) +set_target_properties(pinyin PROPERTIES IMPORTED_LOCATION ${PINYIN_LIBRARIES}) +target_include_directories(pinyin + INTERFACE + ${PINYIN_INCLUDE_DIRS}) \ No newline at end of file diff --git a/features/qskconfig.cmake b/features/qskconfig.cmake index c618bb16..62fd0854 100644 --- a/features/qskconfig.cmake +++ b/features/qskconfig.cmake @@ -49,8 +49,8 @@ option(BUILD_QSKDLL "Build qskinny as shared library" ON) option(BUILD_EXAMPLES "Build qskinny examples" ON) option(BUILD_PLAYGROUND "Build qskinny playground" ON) option(BUILD_SVG2QVG_STANDALONE "If 'ON' application won't be linked against qskinny library" ON) -option(ENABLE_PINYIN "Enable romanization system for standard mandarin chinese" OFF) # TODO try find pkg-config -option(ENABLE_HUNSPELL "Enable spell checker" OFF) # TODO try find pkg-config +option(ENABLE_PINYIN "UNIX ONLY OPTION: Enable romanization system for standard mandarin chinese" OFF) +option(ENABLE_HUNSPELL "UNIX ONLY OPTION: Enable spell checker" OFF) option(ENABLE_FONT_CONFIG "Enable font config for font caching" ON) option(ENABLE_ENSURE_SKINS "Enabling fall back code, that inserts some skin factories manually when not finding skin factories as plugins" ON) option(ENABLE_AUTOQVG "enable automatic qvg compilation" OFF) diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index 725a1f99..88e25f15 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -10,31 +10,33 @@ list(APPEND TARGET_OTHER_FILES metadata.json) if(ENABLE_PINYIN) - if(UNIX) - # TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin - list(APPEND TARGET_HEADERS - ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h) - list(APPEND TARGET_SOURCES - ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp) - else() - message(WARNING "Feature 'pinyin' currently only available for UNIX!") - endif() + list(APPEND TARGET_HEADERS + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.h) + list(APPEND TARGET_SOURCES + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskPinyinTextPredictor.cpp) endif() if(ENABLE_HUNSPELL) - if(UNIX) - # TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell - list(APPEND TARGET_HEADERS - ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h) - list(APPEND TARGET_SOURCES - ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp) - else() - message(WARNING "Feature 'hunspell' currently only available for UNIX!") - endif() + list(APPEND TARGET_HEADERS + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.h) + list(APPEND TARGET_SOURCES + ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp) endif() add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) +if(ENABLE_PINYIN) + target_link_libraries(${TARGET_NAME} + PRIVATE + pinyin) +endif() + +if(ENABLE_HUNSPELL) + target_link_libraries(${TARGET_NAME} + PRIVATE + hunspell) +endif() + if(BUILD_QSKDLL) target_compile_definitions(${TARGET_NAME} PRIVATE diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 100bbf1a..978d62a0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -363,29 +363,18 @@ list(APPEND TARGET_SOURCES inputpanel/QskVirtualKeyboard.cpp) if(ENABLE_PINYIN) - if(UNIX) - target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) # TODO required? - # TODO CONFIG += link_pkgconfig PKGCONFIG += pinyin - list(APPEND TARGET_HEADERS - inputpanel/QskPinyinTextPredictor.h) + list(APPEND TARGET_HEADERS + inputpanel/QskPinyinTextPredictor.h) - list(APPEND TARGET_SOURCES - inputpanel/QskPinyinTextPredictor.cpp) - else() - message(WARNING "Feature 'pinyin' currently only available for UNIX!") - endif() + list(APPEND TARGET_SOURCES + inputpanel/QskPinyinTextPredictor.cpp) endif() if(ENABLE_HUNSPELL) - if(UNIX) - # TODO CONFIG += link_pkgconfig PKGCONFIG += hunspell - list(APPEND TARGET_HEADERS - inputpanel/QskHunspellTextPredictor.h) - list(APPEND TARGET_SOURCES - inputpanel/QskHunspellTextPredictor.cpp) - else() - message(WARNING "Feature 'hunspell' currently only available for UNIX!") - endif() + list(APPEND TARGET_HEADERS + inputpanel/QskHunspellTextPredictor.h) + list(APPEND TARGET_SOURCES + inputpanel/QskHunspellTextPredictor.cpp) endif() set(TARGET_NAME qskinny) @@ -433,6 +422,20 @@ if (Qt_VERSION_MAJOR VERSION_GREATER "5") ${Qt}::OpenGLPrivate) endif() +if(ENABLE_HUNSPELL) + target_link_libraries(${TARGET_NAME} + PRIVATE + hunspell) +endif() + +if(ENABLE_PINYIN) + target_compile_definitions(${TARGET_NAME} PRIVATE PINYIN) + + target_link_libraries(${TARGET_NAME} + PRIVATE + pinyin) +endif() + set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON From 0842e9506ad839ad0689747d379e1a00645cf03a Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 4 Nov 2022 14:19:30 +0100 Subject: [PATCH 54/77] advance pinyin integration --- CMakeLists.txt | 8 ++++++-- README.md | 4 ++++ cmake/QSkinnyOptionalPinyin.cmake | 7 +++++-- inputcontext/CMakeLists.txt | 3 ++- src/CMakeLists.txt | 17 ++++++++++------- 5 files changed, 27 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 80b552b5..ec020358 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,8 @@ set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) +include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) + if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") else() @@ -59,13 +61,13 @@ elseif(NOT "${Qt6_DIR}" STREQUAL "") endif() # optional package hunspell -if(NOT UNIX AND ENABLE_HUNSPELL) +if(NOT LINUX AND ENABLE_HUNSPELL) message(WARNING "Feature 'hunspell' only available for UNIX!") unset(ENABLE_HUNSPELL CACHE) endif() # optional package pinyin -if(NOT UNIX AND ENABLE_PINYIN) +if(NOT LINUX AND ENABLE_PINYIN) message(WARNING "Feature 'pinyin' only available for UNIX!") unset(ENABLE_PINYIN CACHE) endif() @@ -160,6 +162,8 @@ install( FILES cmake/${PACKAGE_NAME}Config.cmake cmake/${PACKAGE_NAME}Macros.cmake + cmake/${PACKAGE_NAME}OptionalHunspell.cmake + cmake/${PACKAGE_NAME}OptionalPinyin.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGE_NAME}/${PACKAGE_NAME}ConfigVersion.cmake DESTINATION ${PACKAGE_LOCATION} diff --git a/README.md b/README.md index 553d8778..be56ed6e 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,10 @@ On debian bullseye these packages need to be installed: `build-essential qt-qmake qtbase5-dev qtbase5-private-dev qtdeclarative5-dev qtdeclarative5-private-dev libqt5svg5-dev`. +> Optional: When enabling the `hunspell` feature the following package needs to be installed: `libhunspell-dev` + +> Optional: When enabling the `pinyin` feature the following package needs to be installed: `libimepinyin-dev` + If you want to know more about QSkinny - or even like to give it a specific direction - please contact support@qskinny.org. diff --git a/cmake/QSkinnyOptionalPinyin.cmake b/cmake/QSkinnyOptionalPinyin.cmake index 1192d517..73eacd14 100644 --- a/cmake/QSkinnyOptionalPinyin.cmake +++ b/cmake/QSkinnyOptionalPinyin.cmake @@ -2,7 +2,7 @@ find_package(PkgConfig) pkg_check_modules(PKG_PINYIN QUIET pinyin) find_path(PINYIN_INCLUDE_DIRS NAMES pinyinime.h - PATH_SUFFIXES pinyin LibIME/libime/pinyin + PATH_SUFFIXES pinyin LibIME LibIME/libime/pinyin HINTS ${PKG_PINYIN_INCLUDE_DIRS}) find_library(PINYIN_LIBRARIES NAMES ${PKG_PINYIN_LIBRARIES} IMEPinyin imepinyin ime libime libimepinyin @@ -17,4 +17,7 @@ add_library(pinyin SHARED IMPORTED GLOBAL) set_target_properties(pinyin PROPERTIES IMPORTED_LOCATION ${PINYIN_LIBRARIES}) target_include_directories(pinyin INTERFACE - ${PINYIN_INCLUDE_DIRS}) \ No newline at end of file + ${PINYIN_INCLUDE_DIRS}) + +find_package(LibIMEPinyin REQUIRED) +find_package(Fcitx5Utils REQUIRED) \ No newline at end of file diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index 88e25f15..ba093f9b 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -28,7 +28,8 @@ add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_O if(ENABLE_PINYIN) target_link_libraries(${TARGET_NAME} PRIVATE - pinyin) + pinyin + Fcitx5::Utils) endif() if(ENABLE_HUNSPELL) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 978d62a0..01faf6ba 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,3 @@ -include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) include(${CMAKE_SOURCE_DIR}/cmake/QSkinnyMacros.cmake) list(APPEND TARGET_HEADERS @@ -396,13 +395,12 @@ endif() target_include_directories(${TARGET_NAME} PUBLIC $ - $ - $ - $ $ - $ $ - $) + $ + $ + $ + $) target_include_directories(${TARGET_NAME} INTERFACE @@ -433,7 +431,12 @@ if(ENABLE_PINYIN) target_link_libraries(${TARGET_NAME} PRIVATE - pinyin) + pinyin + Fcitx5::Utils) + + target_include_directories(${TARGET_NAME} + PUBLIC + $) endif() set_target_properties(${TARGET_NAME} From 061daaebe057fa2af737ca6e471d1f440136ccff Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 18 Nov 2022 13:59:10 +0100 Subject: [PATCH 55/77] add integration test; install headers; matrix paths --- .github/workflows/cmake.yml | 80 ++++++++++++------- CMakeLists.txt | 13 ++- examples/iotdashboard/CMakeLists.txt | 24 ++++-- examples/iotdashboard/main.cpp | 4 + .../iotdashboard_smoketest/CMakeLists.txt | 57 +++++++++++++ src/CMakeLists.txt | 5 ++ support/CMakeLists.txt | 7 +- 7 files changed, 144 insertions(+), 46 deletions(-) create mode 100644 examples/iotdashboard_smoketest/CMakeLists.txt diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 73fcb512..2459a089 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -1,5 +1,11 @@ name: CMake Build Matrix +# Directories +# - $GITHUB_WORKSPACE/qskinny_source : Checkout directory for qskinny sources +# - $GITHUB_WORKSPACE/qskinny_build : Build directory for QSkinny CMake +# - $GITHUB_WORKSPACE/qskinny_install : Install directory for QSkinny package +# - $GITHUB_WORKSPACE/qskinny_build_test : Build directory for QSkinny CMake integration test + on: push: branches: [cmake] @@ -185,12 +191,16 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 + - name: Git Checkout + uses: actions/checkout@v3 + with: + path: qskinny_source - name: Print env run: | echo github.event.action: ${{ github.event.action }} echo github.event_name: ${{ github.event_name }} + - name: Install dependencies on windows if: startsWith(matrix.config.os, 'windows') run: | @@ -207,6 +217,7 @@ jobs: ninja --version cmake --version gcc --version + - name: Install dependencies on ubuntu9 if: startsWith(matrix.config.name, 'Ubuntu GCC 9') run: | @@ -242,6 +253,7 @@ jobs: sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake/bin/cmake 1 --force echo cmake version after cmake --version + - name: Install dependencies on macos if: startsWith(matrix.config.os, 'macos') run: | @@ -253,7 +265,15 @@ jobs: if: startsWith(matrix.config.name, 'Ubuntu') && endsWith(matrix.config.name, 'Qt6') run: sudo apt-get install libxkbcommon-dev -y - - uses: actions/checkout@v2 + - name: Install hunspell for Ubuntu + if: false && startsWith(matrix.config.name, 'Ubuntu') + run: | + sudo apt-get install -y libhunspell-dev + + - name: Install pinyin for Ubuntu + if: false && startsWith(matrix.config.name, 'Ubuntu') + run: | + sudo apt-get install -y libimepinyin-dev - name: Cache Qt5 if: endsWith(matrix.config.name, 'Qt5') @@ -278,7 +298,7 @@ jobs: version: "5.15.2" target: "desktop" install-deps: "true" - modules: "qtwebengine" + modules: "qtwebengine qtpositioning" cached: ${{ steps.cache-qt-5-15.outputs.cache-hit }} setup-python: "false" tools: "" @@ -292,49 +312,53 @@ jobs: version: "6.2.4" target: "desktop" install-deps: "true" - modules: "qtwebengine" + modules: "qtwebengine qtpositioning" cached: ${{ steps.cache-qt-6-2.outputs.cache-hit }} setup-python: "false" tools: "" set-env: "true" tools-only: "false" - - name: Install hunspell for Ubuntu - if: startsWith(matrix.config.name, 'Ubuntu') - run: | - sudo apt-get install -y libhunspell-dev - - - name: Install pinyin for Ubuntu - if: startsWith(matrix.config.name, 'Ubuntu') - run: | - sudo apt-get install -y libimepinyin-dev - - - name: Configure + - name: Configure ( QSkinny ) shell: bash run: | - mkdir build - mkdir instdir + mkdir qskinny_build + mkdir qskinny_install cmake \ - -S . \ - -B . \ + -S qskinny_source \ + -B qskinny_build \ -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ - -DCMAKE_INSTALL_PREFIX:PATH=instdir \ - -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \ - -DENABLE_HUNSPELL:BOOL=ON \ - -DENABLE_PINYIN:BOOL=ON + -DCMAKE_INSTALL_PREFIX:PATH=qskinny_install \ + -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" - - name: Build + - name: Build ( QSkinny ) shell: bash - run: cmake --build . --config ${{ matrix.config.build_type }} + run: cmake --build qskinny_build --config ${{ matrix.config.build_type }} #- name: Tests # shell: bash # run: ctest -j14 -C Release -T test --output-on-failure - # - name: Install Strip - # shell: bash - # run: cmake --install . --strip + - name: Install ( QSkinny ) Strip + shell: bash + run: cmake --install . --strip + + - name: Configure ( CMake Integration Test ) + shell: bash + run: | + mkdir qskinny_build_test + cmake \ + -S qskinny_source/examples/iotdashboard_smoketest \ + -B qskinny_build_test \ + -G "${{ matrix.config.generators }}" \ + -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ + -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \ + -DQSkinny_DIR:PATH=qskinny_install/lib/cmake/QSkinny + + - name: Build ( CMake Integration Test ) + shell: bash + run: cmake --build qskinny_build_test --config ${{ matrix.config.build_type }} # - name: Pack # shell: bash diff --git a/CMakeLists.txt b/CMakeLists.txt index ec020358..6862e77d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,10 +99,6 @@ set(QSK_INSTALL_EXAMPLES examples) set(CMAKE_DEBUG_POSTFIX d) # define binary install directory globally set(CMAKE_INSTALL_BINDIR ${QSK_INSTALL_BINS}$<$:/debug>) -# define library install directory globally -# set(CMAKE_INSTALL_LIBDIR lib$<$:/debug>) -# define install rpath globally -# set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${QSK_INSTALL_LIBS}) add_subdirectory(src) add_subdirectory(skins) @@ -131,10 +127,11 @@ set(PACKAGE_NAMESPACE Qsk) set(PACKAGE_LOCATION lib/cmake/${PROJECT_NAME}) install(TARGETS qskinny EXPORT ${PACKAGE_NAME}Targets - LIBRARY DESTINATION ${QSK_INSTALL_LIBS} - ARCHIVE DESTINATION ${QSK_INSTALL_LIBS} - RUNTIME DESTINATION ${QSK_INSTALL_LIBS} - INCLUDES DESTINATION ${QSK_INSTALL_HEADERS}) + LIBRARY DESTINATION ${QSK_INSTALL_LIBS} + ARCHIVE DESTINATION ${QSK_INSTALL_LIBS} + RUNTIME DESTINATION ${QSK_INSTALL_LIBS} + INCLUDES DESTINATION ${QSK_INSTALL_HEADERS} + PUBLIC_HEADER DESTINATION ${QSK_INSTALL_HEADERS}) include(CMakePackageConfigHelpers) write_basic_package_version_file( diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index d3545c78..ca7d374a 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -80,8 +80,22 @@ set_target_properties(${TARGET_NAME} AUTORCC ON FOLDER examples) -target_link_libraries(${TARGET_NAME} - PRIVATE - qskinny - qsktestsupport - ${Qt}::Svg) \ No newline at end of file +if(TARGET Qsk::qskinny) + # integration test + # - qsktestsupport doesn't exists + # - qskinny has a namespace Qsk + target_link_libraries(${TARGET_NAME} + PRIVATE + Qsk::qskinny + ${Qt}::Svg) +else() + target_link_libraries(${TARGET_NAME} + PRIVATE + qskinny + qsktestsupport + ${Qt}::Svg) + + target_compile_definitions(${TARGET_NAME} + PRIVATE + USE_SHORTCUTS) +endif() \ No newline at end of file diff --git a/examples/iotdashboard/main.cpp b/examples/iotdashboard/main.cpp index 78b71d87..86d42373 100644 --- a/examples/iotdashboard/main.cpp +++ b/examples/iotdashboard/main.cpp @@ -7,7 +7,9 @@ #include "GraphicProvider.h" #include "Skin.h" +#ifdef USE_SHORTCUTS #include +#endif #include #include @@ -75,9 +77,11 @@ int main( int argc, char* argv[] ) qskSetup->setSkin( "DaytimeSkin" ); +#ifdef USE_SHORTCUTS // With CTRL-B you can rotate a couple of visual debug modes SkinnyShortcut::enable( SkinnyShortcut::RotateSkin | SkinnyShortcut::DebugBackground | SkinnyShortcut::DebugStatistics | SkinnyShortcut::Quit ); +#endif MainWindow window; window.show(); diff --git a/examples/iotdashboard_smoketest/CMakeLists.txt b/examples/iotdashboard_smoketest/CMakeLists.txt new file mode 100644 index 00000000..3d65b45c --- /dev/null +++ b/examples/iotdashboard_smoketest/CMakeLists.txt @@ -0,0 +1,57 @@ +cmake_minimum_required(VERSION 3.18) + +project(iotdashboard_smoketest) + +find_package(QSkinny REQUIRED) + +if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") + message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") +else() + # force include Qt's private headers + if(NOT "${Qt5_DIR}" STREQUAL "") + set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + elseif(NOT "${Qt6_DIR}" STREQUAL "") + #set(Qt6Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + set(Qt6WebEngineQuick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + endif() +endif() + +if(NOT "${Qt5_DIR}" STREQUAL "") + find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) + find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) + set(Qt Qt${Qt5_VERSION_MAJOR}) + set(Qt_VERSION ${Qt5_VERSION}) + set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) + set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) + set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) +elseif(NOT "${Qt6_DIR}" STREQUAL "") + + string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") + set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) + + find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) + find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) + set(Qt Qt${Qt6_VERSION_MAJOR}) + set(Qt_VERSION ${Qt6_VERSION}) + set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) + set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) + set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) +endif() + +add_subdirectory(../iotdashboard ${CMAKE_CURRENT_BINARY_DIR}/../iotdashboard) \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 01faf6ba..ed4b122b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -449,3 +449,8 @@ set_target_properties(${TARGET_NAME} set_target_properties(${TARGET_NAME} PROPERTIES AUTOGEN_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/qskinny_autogen) + +list(TRANSFORM TARGET_HEADERS PREPEND "${CMAKE_CURRENT_LIST_DIR}/") +set_target_properties(${TARGET_NAME} + PROPERTIES + PUBLIC_HEADER "${TARGET_HEADERS}") \ No newline at end of file diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 11b43ce0..a1bec638 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -48,7 +48,7 @@ endif() target_compile_definitions(${TARGET_NAME} PRIVATE - PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) # TODO this'll work only locally since CMAKE_INSTALL_PREFIX is an absolute path + PLUGIN_PATH=${CMAKE_INSTALL_PREFIX}/skins) target_include_directories(${TARGET_NAME} PUBLIC @@ -58,13 +58,10 @@ if(ENABLE_ENSURE_SKINS) target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/skins) target_compile_definitions(${TARGET_NAME} PRIVATE ENSURE_SKINS) - # TODO - # use_install_rpath: QMAKE_RPATHDIR *= $${QSK_INSTALL_PLUGINS}/skins - # use_local_rpath: QMAKE_RPATHDIR *= $${QSK_PLUGIN_DIR}/skins target_link_libraries(${TARGET_NAME} PRIVATE squiekskin material3skin) endif() -install(TARGETS ${TARGET_NAME} DESTINATION lib) # TODO unify lib install directory \ No newline at end of file +install(TARGETS ${TARGET_NAME} DESTINATION ${QSK_INSTALL_LIBS}) \ No newline at end of file From ff3ffb4bc13127658645a7b350ee56f441e1fcf1 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 18 Nov 2022 14:02:24 +0100 Subject: [PATCH 56/77] removed qtpositioning from qt modules --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 2459a089..fc47889f 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -298,7 +298,7 @@ jobs: version: "5.15.2" target: "desktop" install-deps: "true" - modules: "qtwebengine qtpositioning" + modules: "qtwebengine" cached: ${{ steps.cache-qt-5-15.outputs.cache-hit }} setup-python: "false" tools: "" @@ -312,7 +312,7 @@ jobs: version: "6.2.4" target: "desktop" install-deps: "true" - modules: "qtwebengine qtpositioning" + modules: "qtwebengine" cached: ${{ steps.cache-qt-6-2.outputs.cache-hit }} setup-python: "false" tools: "" From ad1710d61a0a62a3fd5b33f38125160a07fc7bcd Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 18 Nov 2022 14:18:32 +0100 Subject: [PATCH 57/77] Fix install directory and type --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index fc47889f..85c020b2 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -342,7 +342,7 @@ jobs: - name: Install ( QSkinny ) Strip shell: bash - run: cmake --install . --strip + run: cmake --install qskinny_build --prefix qskinny_install --strip --config ${{ matrix.config.build_type }} - name: Configure ( CMake Integration Test ) shell: bash From 8d627c82886e857b162025cebed4527af553e6d8 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 18 Nov 2022 15:24:18 +0100 Subject: [PATCH 58/77] use absolute install path for qskinny --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 85c020b2..43d93e7b 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -354,7 +354,7 @@ jobs: -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \ - -DQSkinny_DIR:PATH=qskinny_install/lib/cmake/QSkinny + -DQSkinny_DIR:PATH=$GITHUB_WORKSPACE/qskinny_install/lib/cmake/QSkinny - name: Build ( CMake Integration Test ) shell: bash From 604df54ec4949a60ac8e74c035fa71e2223b8fea Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Tue, 22 Nov 2022 15:02:03 +0100 Subject: [PATCH 59/77] remove todo comment --- playground/grids/CMakeLists.txt | 9 --------- 1 file changed, 9 deletions(-) diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt index e7bdc1ad..ba836e55 100644 --- a/playground/grids/CMakeLists.txt +++ b/playground/grids/CMakeLists.txt @@ -22,15 +22,6 @@ add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) -# TODO -#linux { -# pedantic -# { -# QMAKE_CXXFLAGS += -isystem $$[ QT_INSTALL_HEADERS ] / QtQuickWidgets QMAKE_CXXFLAGS += -# -isystem $$[ QT_INSTALL_HEADERS ] / QtWidgets -# } -#} - target_link_libraries(${TARGET_NAME} PRIVATE qskinny From aa6857e2dd09c9b39472d612bbbdfda7b94e0d92 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Tue, 22 Nov 2022 15:07:55 +0100 Subject: [PATCH 60/77] try remove qt private cache string --- CMakeLists.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6862e77d..99aaf69b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,25 +15,25 @@ if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") else() # force include Qt's private headers if(NOT "${Qt5_DIR}" STREQUAL "") - set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) elseif(NOT "${Qt6_DIR}" STREQUAL "") #set(Qt6Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) #set(Qt6Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) #set(Qt6Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) #set(Qt6QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) #set(Qt6Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6WebEngineQuick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) + #set(Qt6WebEngineQuick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) #set(Qt6Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) endif() endif() From 76870d7b789f50c6c26f1942003e1ebbc870b4a6 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Thu, 15 Dec 2022 15:08:57 +0100 Subject: [PATCH 61/77] try removing private dummy variables --- CMakeLists.txt | 44 +++++--------------------------------------- 1 file changed, 5 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 99aaf69b..5cff5585 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16.3) -project(QSkinny VERSION 999.99.9) # TODO get from git branch name or +project(QSkinny VERSION 999.99.9) set_property(GLOBAL PROPERTY USE_FOLDERS ON) @@ -10,34 +10,7 @@ set(CMAKE_CXX_EXTENSIONS OFF) include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) -if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") - message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") -else() - # force include Qt's private headers - if(NOT "${Qt5_DIR}" STREQUAL "") - #set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - elseif(NOT "${Qt6_DIR}" STREQUAL "") - #set(Qt6Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6WebEngineQuick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - endif() -endif() - +# find either Qt5 or Qt6 requred and optional components if(NOT "${Qt5_DIR}" STREQUAL "") find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) @@ -47,17 +20,17 @@ if(NOT "${Qt5_DIR}" STREQUAL "") set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) elseif(NOT "${Qt6_DIR}" STREQUAL "") - string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) - find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) - find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) + find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) # check optional QuickWidgets Svg Widgets set(Qt Qt${Qt6_VERSION_MAJOR}) set(Qt_VERSION ${Qt6_VERSION}) set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) +else() + message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") endif() # optional package hunspell @@ -80,13 +53,6 @@ if(ENABLE_PINYIN) include(cmake/QSkinnyOptionalPinyin.cmake) endif() -if(TRUE) - message(STATUS "\${Qt} : ${Qt}") - message(STATUS "\${Qt_VERSION_MAJOR}: ${Qt_VERSION_MAJOR}") - message(STATUS "\${Qt_VERSION_MINOR}: ${Qt_VERSION_MINOR}") - message(STATUS "\${Qt_VERSION_PATCH}: ${Qt_VERSION_PATCH}") -endif() - # define install directories set(QSK_INSTALL_DOCS doc) set(QSK_INSTALL_HEADERS include) From 778ac062156ad2786f946c9489c76a74ee03efae Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 13:19:46 +0100 Subject: [PATCH 62/77] add WIN32 MACOSX_BUNDLE to all GUI applications --- 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 +- playground/anchors/CMakeLists.txt | 2 +- playground/dialogbuttons/CMakeLists.txt | 2 +- playground/dials/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/webview/CMakeLists.txt | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/examples/boxes/CMakeLists.txt b/examples/boxes/CMakeLists.txt index 3c200e19..f271cf1a 100644 --- a/examples/boxes/CMakeLists.txt +++ b/examples/boxes/CMakeLists.txt @@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME boxes) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/buttons/CMakeLists.txt b/examples/buttons/CMakeLists.txt index dcf81117..556b5f6a 100644 --- a/examples/buttons/CMakeLists.txt +++ b/examples/buttons/CMakeLists.txt @@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME buttons) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/desktop/CMakeLists.txt b/examples/desktop/CMakeLists.txt index 681d713d..b64031e3 100644 --- a/examples/desktop/CMakeLists.txt +++ b/examples/desktop/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME desktop) -add_executable(${TARGET_NAME} ${TARGET_SOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/frames/CMakeLists.txt b/examples/frames/CMakeLists.txt index c9da2ba7..f1a039fa 100644 --- a/examples/frames/CMakeLists.txt +++ b/examples/frames/CMakeLists.txt @@ -10,7 +10,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME frames) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/gallery/CMakeLists.txt b/examples/gallery/CMakeLists.txt index 4b9fb6d0..c390ccca 100644 --- a/examples/gallery/CMakeLists.txt +++ b/examples/gallery/CMakeLists.txt @@ -49,7 +49,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME gallery) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/glabels/CMakeLists.txt b/examples/glabels/CMakeLists.txt index f42d7e6a..a6f463cc 100644 --- a/examples/glabels/CMakeLists.txt +++ b/examples/glabels/CMakeLists.txt @@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME glabels) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index ca7d374a..2e645217 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -69,7 +69,7 @@ list(APPEND TARGET_RESSOURCES set(TARGET_NAME iotdashboard) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) diff --git a/examples/layouts/CMakeLists.txt b/examples/layouts/CMakeLists.txt index 0e347229..1671b7c9 100644 --- a/examples/layouts/CMakeLists.txt +++ b/examples/layouts/CMakeLists.txt @@ -22,7 +22,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME layouts) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/listbox/CMakeLists.txt b/examples/listbox/CMakeLists.txt index c8c6131f..d02b9227 100644 --- a/examples/listbox/CMakeLists.txt +++ b/examples/listbox/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME listbox) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/messagebox/CMakeLists.txt b/examples/messagebox/CMakeLists.txt index 05eda1d9..acfa5e4c 100644 --- a/examples/messagebox/CMakeLists.txt +++ b/examples/messagebox/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME messagebox) -add_executable(${TARGET_NAME} ${TARGET_SOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/messageboxQml/CMakeLists.txt b/examples/messageboxQml/CMakeLists.txt index 0eac6563..93936fa5 100644 --- a/examples/messageboxQml/CMakeLists.txt +++ b/examples/messageboxQml/CMakeLists.txt @@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME messageboxQml) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_RESSOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/mycontrols/CMakeLists.txt b/examples/mycontrols/CMakeLists.txt index 9563e9f2..2b1bd227 100644 --- a/examples/mycontrols/CMakeLists.txt +++ b/examples/mycontrols/CMakeLists.txt @@ -11,7 +11,7 @@ list(APPEND TARGET_HEADERS set(TARGET_NAME mycontrols) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index 64b56cf2..124d50af 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -22,7 +22,7 @@ list(APPEND TARGET_QVGS set(TARGET_NAME qvgviewer) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES} diff --git a/examples/tabview/CMakeLists.txt b/examples/tabview/CMakeLists.txt index dc5c07fc..737693ef 100644 --- a/examples/tabview/CMakeLists.txt +++ b/examples/tabview/CMakeLists.txt @@ -11,7 +11,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME tabview) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/thumbnails/CMakeLists.txt b/examples/thumbnails/CMakeLists.txt index 9b01107f..e743e583 100644 --- a/examples/thumbnails/CMakeLists.txt +++ b/examples/thumbnails/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME thumbnails) -add_executable(${TARGET_NAME} ${TARGET_SOURCES}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/playground/anchors/CMakeLists.txt b/playground/anchors/CMakeLists.txt index 9f9c9f19..70d1ec41 100644 --- a/playground/anchors/CMakeLists.txt +++ b/playground/anchors/CMakeLists.txt @@ -20,7 +20,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME anchors) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) diff --git a/playground/dialogbuttons/CMakeLists.txt b/playground/dialogbuttons/CMakeLists.txt index 982cd1e7..afdc238a 100644 --- a/playground/dialogbuttons/CMakeLists.txt +++ b/playground/dialogbuttons/CMakeLists.txt @@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES Window.cpp main.cpp) -add_executable(${TARGET_NAME} ${TARGET_SOURCES} ${TARGET_HEADERS}) +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/playground/dials/CMakeLists.txt b/playground/dials/CMakeLists.txt index f8e8130f..a25a8bc3 100644 --- a/playground/dials/CMakeLists.txt +++ b/playground/dials/CMakeLists.txt @@ -16,7 +16,7 @@ list(APPEND TARGET_RESSOURCES set(TARGET_NAME dials) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt index ba836e55..ddf0a57a 100644 --- a/playground/grids/CMakeLists.txt +++ b/playground/grids/CMakeLists.txt @@ -18,7 +18,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME grid) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) diff --git a/playground/images/CMakeLists.txt b/playground/images/CMakeLists.txt index 66915eab..969af8e9 100644 --- a/playground/images/CMakeLists.txt +++ b/playground/images/CMakeLists.txt @@ -10,7 +10,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME images) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) diff --git a/playground/inputpanel/CMakeLists.txt b/playground/inputpanel/CMakeLists.txt index 9e950bbd..70c3b21b 100644 --- a/playground/inputpanel/CMakeLists.txt +++ b/playground/inputpanel/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME inputpanel) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) target_link_libraries(${TARGET_NAME} diff --git a/playground/invoker/CMakeLists.txt b/playground/invoker/CMakeLists.txt index 26a08274..9560b690 100644 --- a/playground/invoker/CMakeLists.txt +++ b/playground/invoker/CMakeLists.txt @@ -9,7 +9,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME invoker) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) diff --git a/playground/shadows/CMakeLists.txt b/playground/shadows/CMakeLists.txt index f8a9ba9a..c92e5238 100644 --- a/playground/shadows/CMakeLists.txt +++ b/playground/shadows/CMakeLists.txt @@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME shadows) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_HEADERS} ${TARGET_SOURCES}) diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt index b2c83ff5..6be06743 100644 --- a/playground/webview/CMakeLists.txt +++ b/playground/webview/CMakeLists.txt @@ -4,7 +4,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME webview) -add_executable(${TARGET_NAME} +add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) target_link_libraries(${TARGET_NAME} From 8103562b114a21ce99295d32c2f7fdb161c6bc8a Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 13:48:45 +0100 Subject: [PATCH 63/77] add smoke test for windows --- .github/workflows/cmake.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 43d93e7b..2f4d716d 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -344,6 +344,26 @@ jobs: shell: bash run: cmake --install qskinny_build --prefix qskinny_install --strip --config ${{ matrix.config.build_type }} + # run the iot examples from build directory using install binaries + - name: Smoke Test ( QSkinny ) on Windows + if: startsWith(matrix.config.name, 'Windows') + run: | + echo "$GITHUB_WORKSPACE/qskinny_install/lib" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "$GITHUB_WORKSPACE/qskinny_install/plugins/skins" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + echo "starting iotdashboard" + Start-Process $GITHUB_WORKSPACE/qskinny_build/examples/iotdashboard -ArgumentList "-qwindowgeometry 1024x600+0+0" + Start-Sleep -s 10 + + # take a screenshot of the example + - uses: OrbitalOwen/desktop-screenshot-action@0.1 + with: + file-name: 'screenshot-windows-qt5-15.jpg' + + # kill the previously started task + - name: Smoke Test Cleanup ( QSkinny ) on Windows + if: startsWith(matrix.config.name, 'Windows') + run: taskkill /IM iotdashboard.exe /T + - name: Configure ( CMake Integration Test ) shell: bash run: | From b7135c4243f3902f74e6585b9c5d37b21c35fd1e Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 14:04:13 +0100 Subject: [PATCH 64/77] try fix environment --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 2f4d716d..d05627a7 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -348,8 +348,8 @@ jobs: - name: Smoke Test ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') run: | - echo "$GITHUB_WORKSPACE/qskinny_install/lib" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - echo "$GITHUB_WORKSPACE/qskinny_install/plugins/skins" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + $Env:PATH += ";$GITHUB_WORKSPACE/qskinny_install/lib" + $Env:PATH += ";$GITHUB_WORKSPACE/qskinny_install/plugins/skins" echo "starting iotdashboard" Start-Process $GITHUB_WORKSPACE/qskinny_build/examples/iotdashboard -ArgumentList "-qwindowgeometry 1024x600+0+0" Start-Sleep -s 10 From 872611620ee563a95e880e341414cadd3f3eb6c1 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 14:20:55 +0100 Subject: [PATCH 65/77] nexyt try to fix smoke test --- .github/workflows/cmake.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index d05627a7..cbc76802 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -348,10 +348,10 @@ jobs: - name: Smoke Test ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') run: | - $Env:PATH += ";$GITHUB_WORKSPACE/qskinny_install/lib" - $Env:PATH += ";$GITHUB_WORKSPACE/qskinny_install/plugins/skins" + $Env:PATH += ;qskinny_install/lib + $Env:PATH += ;qskinny_install/plugins/skins echo "starting iotdashboard" - Start-Process $GITHUB_WORKSPACE/qskinny_build/examples/iotdashboard -ArgumentList "-qwindowgeometry 1024x600+0+0" + Start-Process qskinny_build/examples/iotdashboard -ArgumentList "-qwindowgeometry 1024x600+0+0" Start-Sleep -s 10 # take a screenshot of the example From 2cc84750f0968eb9b84d7bbcb4c0352e5abeb1d8 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 14:33:13 +0100 Subject: [PATCH 66/77] next try --- .github/workflows/cmake.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index cbc76802..7d4f384f 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -348,10 +348,10 @@ jobs: - name: Smoke Test ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') run: | - $Env:PATH += ;qskinny_install/lib - $Env:PATH += ;qskinny_install/plugins/skins - echo "starting iotdashboard" - Start-Process qskinny_build/examples/iotdashboard -ArgumentList "-qwindowgeometry 1024x600+0+0" + $Env:PATH += ";qskinny_install/lib" + $Env:PATH += ";qskinny_install/plugins/skins" + echo "starting iotdashboard" + Start-Process qskinny_build\examples\iotdashboard\Release\iotdashboard.exe -ArgumentList "-qwindowgeometry 1024x600+0+0" Start-Sleep -s 10 # take a screenshot of the example From b8f202f1f2b537e42ff81af92b8fc41b6752d506 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 15:32:48 +0100 Subject: [PATCH 67/77] add macos and ubuntu; renamed screenshot filenames --- .github/workflows/cmake.yml | 41 ++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 7d4f384f..76f7cded 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -275,6 +275,11 @@ jobs: run: | sudo apt-get install -y libimepinyin-dev + - name: Install imagemagick for Ubuntu + if: startsWith(matrix.config.name, 'Ubuntu') + run: | + sudo apt-get install -y imagemagick + - name: Cache Qt5 if: endsWith(matrix.config.name, 'Qt5') id: cache-qt-5-15 @@ -344,7 +349,13 @@ jobs: shell: bash run: cmake --install qskinny_build --prefix qskinny_install --strip --config ${{ matrix.config.build_type }} - # run the iot examples from build directory using install binaries + - name: Smoke test ( QSkinny ) on MacOS + if: startsWith(matrix.config.name, 'macOS') + run: | + echo "starting iotdashboard" + DYLD_LIBRARY_PATH=./qskinny_install/lib:./qskinny_install/plugins/skins ./qskinny_build/examples/iotdashboard/iotdashboard.app/Contents/MacOS/iotdashboard -qwindowgeometry 1024x600+75+100 & + sleep 10 + - name: Smoke Test ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') run: | @@ -354,15 +365,35 @@ jobs: Start-Process qskinny_build\examples\iotdashboard\Release\iotdashboard.exe -ArgumentList "-qwindowgeometry 1024x600+0+0" Start-Sleep -s 10 - # take a screenshot of the example + - name: Smoke test ( QSkinny ) on Ubuntu + if: startsWith(matrix.config.name, 'Ubuntu') + run: | + echo starting Xvfb + Xvfb :1 & + sleep 10 + echo starting iotdashboard + ./qskinny_build/examples/iotdashboard/iotdashboard & + sleep 10 + - uses: OrbitalOwen/desktop-screenshot-action@0.1 with: - file-name: 'screenshot-windows-qt5-15.jpg' + file-name: format('Screenshot {0} {1}.jpg', matrix.config.name, matrix.config.cmake.qtversion) - # kill the previously started task - name: Smoke Test Cleanup ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') - run: taskkill /IM iotdashboard.exe /T + run: | + taskkill /IM iotdashboard.exe /T + + - name: Smoke Test Cleanup ( QSkinny ) on MacOS + if: startsWith(matrix.config.name, 'macOS') + run: | + killall iotdashboard + + - name: Smoke Test Cleanup ( QSkinny ) on Ubuntu + if: startsWith(matrix.config.name, 'Ubuntu') + run: | + killall gallery + killall Xvfb - name: Configure ( CMake Integration Test ) shell: bash From 3ece3041827811e2205ee03c36138ed1cbc47bac Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 16:02:45 +0100 Subject: [PATCH 68/77] fix invalid characters in screenshot filename --- .github/workflows/cmake.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 76f7cded..3293bb90 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -349,6 +349,11 @@ jobs: shell: bash run: cmake --install qskinny_build --prefix qskinny_install --strip --config ${{ matrix.config.build_type }} + - name: Smoke test screenshot artifact + run: | + echo "SCREENSHOT_FILENAME=$(echo "Screenshot ${{ matrix.config.name }} Qt ${{ matrix.config.cmake.qtversion }}" | sed -e "s/ /-/g")" >> $GITHUB_ENV + echo $SCREENSHOT_FILENAME + - name: Smoke test ( QSkinny ) on MacOS if: startsWith(matrix.config.name, 'macOS') run: | @@ -377,7 +382,7 @@ jobs: - uses: OrbitalOwen/desktop-screenshot-action@0.1 with: - file-name: format('Screenshot {0} {1}.jpg', matrix.config.name, matrix.config.cmake.qtversion) + file-name: $SCREENSHOT_FILENAME - name: Smoke Test Cleanup ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') @@ -392,7 +397,7 @@ jobs: - name: Smoke Test Cleanup ( QSkinny ) on Ubuntu if: startsWith(matrix.config.name, 'Ubuntu') run: | - killall gallery + killall iotdashboard killall Xvfb - name: Configure ( CMake Integration Test ) From 944e07603e9636ca8b684e61b584b1a2a3d2ac98 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 16:23:30 +0100 Subject: [PATCH 69/77] try resolve screenshot filename from env file --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 3293bb90..2e9cec3d 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -351,7 +351,7 @@ jobs: - name: Smoke test screenshot artifact run: | - echo "SCREENSHOT_FILENAME=$(echo "Screenshot ${{ matrix.config.name }} Qt ${{ matrix.config.cmake.qtversion }}" | sed -e "s/ /-/g")" >> $GITHUB_ENV + echo "SCREENSHOT_FILENAME=$(echo "Screenshot ${{ matrix.config.name }} ${{ matrix.config.cmake.qtversion }}" | sed -e "s/ /-/g")" >> $GITHUB_ENV echo $SCREENSHOT_FILENAME - name: Smoke test ( QSkinny ) on MacOS @@ -382,7 +382,7 @@ jobs: - uses: OrbitalOwen/desktop-screenshot-action@0.1 with: - file-name: $SCREENSHOT_FILENAME + file-name: ${{ env.SCREENSHOT_FILENAME }} - name: Smoke Test Cleanup ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') From fc4d029549d54d966c63223b28ce00d6cf0f9ad6 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 16:46:36 +0100 Subject: [PATCH 70/77] try use config variable --- .github/workflows/cmake.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 2e9cec3d..798f8a22 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -36,6 +36,7 @@ jobs: qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", }, + screenshot_filename: "windows-latest-msvc-qt-5-15-2.jpg", } - { name: "Windows Latest MSVC Qt6", @@ -53,6 +54,7 @@ jobs: qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", }, + screenshot_filename: "windows-latest-msvc-qt-6-2-4.jpg", } - { name: "Windows 2019 MSVC Qt5", @@ -70,6 +72,7 @@ jobs: qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", }, + screenshot_filename: "windows-2019-msvc-qt-5-15-2.jpg", } - { name: "Windows 2019 MSVC Qt6", @@ -87,6 +90,7 @@ jobs: qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", }, + screenshot_filename: "windows-2019-msvc-qt-6-2-4.jpg", } - { name: "Ubuntu Latest GCC Qt5", @@ -104,6 +108,7 @@ jobs: qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", }, + screenshot_filename: "ubuntu-latest-gcc-qt-5-15-2.jpg", } - { name: "Ubuntu Latest GCC Qt6", @@ -121,6 +126,7 @@ jobs: qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", }, + screenshot_filename: "ubuntu-latest-gcc-qt-6-2-4.jpg", } - { name: "Ubuntu GCC 9 Qt5", @@ -138,6 +144,7 @@ jobs: qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", }, + screenshot_filename: "ubuntu-latest-gcc-9-qt-5-15-2.jpg", } - { name: "Ubuntu GCC 9 Qt6", @@ -155,6 +162,7 @@ jobs: qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", }, + screenshot_filename: "ubuntu-latest-gcc-9-qt-6-2-4.jpg", } - { name: "macOS Latest Clang Qt5", @@ -171,6 +179,7 @@ jobs: qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", }, + screenshot_filename: "macos-latest-clang-qt-5-15-2.jpg", } - { name: "macOS Latest Clang Qt6", @@ -187,11 +196,12 @@ jobs: qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/clang_64/lib/cmake/Qt6", }, + screenshot_filename: "macos-latest-clang-qt-6-2-4.jpg", } steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - name: Git Checkout + - name: Git Checkout uses: actions/checkout@v3 with: path: qskinny_source @@ -349,11 +359,6 @@ jobs: shell: bash run: cmake --install qskinny_build --prefix qskinny_install --strip --config ${{ matrix.config.build_type }} - - name: Smoke test screenshot artifact - run: | - echo "SCREENSHOT_FILENAME=$(echo "Screenshot ${{ matrix.config.name }} ${{ matrix.config.cmake.qtversion }}" | sed -e "s/ /-/g")" >> $GITHUB_ENV - echo $SCREENSHOT_FILENAME - - name: Smoke test ( QSkinny ) on MacOS if: startsWith(matrix.config.name, 'macOS') run: | @@ -382,7 +387,7 @@ jobs: - uses: OrbitalOwen/desktop-screenshot-action@0.1 with: - file-name: ${{ env.SCREENSHOT_FILENAME }} + file-name: ${{ matrix.config.screenshot_filename }} - name: Smoke Test Cleanup ( QSkinny ) on Windows if: startsWith(matrix.config.name, 'Windows') From 3f88b9134b834249476e41edd2ad8489c0c7c1c9 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Fri, 16 Dec 2022 17:20:09 +0100 Subject: [PATCH 71/77] fix missing display environment --- .github/workflows/cmake.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 798f8a22..5439efd3 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -377,6 +377,8 @@ jobs: - name: Smoke test ( QSkinny ) on Ubuntu if: startsWith(matrix.config.name, 'Ubuntu') + env: + DISPLAY: ":1" run: | echo starting Xvfb Xvfb :1 & From 3414b2b8026eac00e2cd3b5888950ff0dbc20906 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Mon, 19 Dec 2022 14:15:17 +0100 Subject: [PATCH 72/77] remove comments --- .github/workflows/cmake.yml | 3 +-- skins/material3/CMakeLists.txt | 2 +- skins/squiek/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 5439efd3..5c77f6f7 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -200,7 +200,6 @@ jobs: } steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Git Checkout uses: actions/checkout@v3 with: @@ -217,7 +216,6 @@ jobs: choco install ninja cmake ninja --version cmake --version - # cmd "${{ matrix.config.environment_script }}" - name: Install dependencies on ubuntu if: startsWith(matrix.config.name, 'Ubuntu Latest GCC') @@ -429,6 +427,7 @@ jobs: # run: | # ls -laR # ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . + # - name: Upload # uses: actions/upload-artifact@v1 # with: diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index 0fdf9d79..c117b02e 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -15,7 +15,7 @@ list(APPEND TARGET_OTHER_FILES metadata.json) if(BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) # TODO remove lib files during installation? + add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) else() add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) endif() diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index e5695dbc..47c120e3 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -15,7 +15,7 @@ list(APPEND TARGET_OTHER_FILES metadata.json) if(BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) # TODO remove lib files during installation? + add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) else() add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) endif() From c194bbaedd57e22ddf82cb992fd1a04de009a655 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Tue, 20 Dec 2022 14:01:57 +0100 Subject: [PATCH 73/77] using qt versionless approach --- CMakeLists.txt | 57 ++++++++++++++++--------- 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 | 6 +-- 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 | 4 +- playground/CMakeLists.txt | 8 ++-- playground/anchors/CMakeLists.txt | 2 +- playground/dialogbuttons/CMakeLists.txt | 2 +- playground/dials/CMakeLists.txt | 2 +- playground/grids/CMakeLists.txt | 4 +- playground/images/CMakeLists.txt | 2 +- playground/inputpanel/CMakeLists.txt | 2 +- playground/invoker/CMakeLists.txt | 2 +- playground/shadows/CMakeLists.txt | 2 +- playground/webview/CMakeLists.txt | 10 ++--- qmlexport/CMakeLists.txt | 2 +- skins/material3/CMakeLists.txt | 4 +- skins/squiek/CMakeLists.txt | 4 +- src/CMakeLists.txt | 16 +++---- support/CMakeLists.txt | 4 +- tools/CMakeLists.txt | 2 +- tools/svg2qvg/CMakeLists.txt | 10 ++--- 34 files changed, 95 insertions(+), 78 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cff5585..a53aca91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,29 +10,46 @@ set(CMAKE_CXX_EXTENSIONS OFF) include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) -# find either Qt5 or Qt6 requred and optional components -if(NOT "${Qt5_DIR}" STREQUAL "") - find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) - find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) - set(Qt Qt${Qt5_VERSION_MAJOR}) - set(Qt_VERSION ${Qt5_VERSION}) - set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) - set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) - set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) -elseif(NOT "${Qt6_DIR}" STREQUAL "") - string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) - find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) - find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) # check optional QuickWidgets Svg Widgets - set(Qt Qt${Qt6_VERSION_MAJOR}) - set(Qt_VERSION ${Qt6_VERSION}) - set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) - set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) - set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) +find_package(Qt6 COMPONENTS Core QUIET) +if (NOT Qt6_FOUND) + find_package(Qt5 5.15 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) + find_package(Qt5 5.15 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) + message(WARNING "using QSkinny's 'qt_add_executable()'") + function(qt_add_executable) + add_executable(${ARGV}) + endfunction(qt_add_executable) + message(WARNING "using QSkinny's 'qt_add_library()'") + function(qt_add_library) + add_library(${ARGV}) + endfunction(qt_add_library) else() - message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") + find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) + find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) endif() +# find either Qt5 or Qt6 requred and optional components +#if(NOT "${Qt5_DIR}" STREQUAL "") +# find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) +# find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) +# set(Qt Qt${Qt5_VERSION_MAJOR}) +# set(Qt_VERSION ${Qt5_VERSION}) +# set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) +# set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) +# set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) +#elseif(NOT "${Qt6_DIR}" STREQUAL "") +# string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") +# set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) +# find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) +# find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) # check optional QuickWidgets Svg Widgets +# set(Qt Qt${Qt6_VERSION_MAJOR}) +# set(Qt_VERSION ${Qt6_VERSION}) +# set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) +# set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) +# set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) +#else() +# message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") +#endif() + # optional package hunspell if(NOT LINUX AND ENABLE_HUNSPELL) message(WARNING "Feature 'hunspell' only available for UNIX!") diff --git a/examples/boxes/CMakeLists.txt b/examples/boxes/CMakeLists.txt index f271cf1a..de145119 100644 --- a/examples/boxes/CMakeLists.txt +++ b/examples/boxes/CMakeLists.txt @@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME boxes) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/buttons/CMakeLists.txt b/examples/buttons/CMakeLists.txt index 556b5f6a..1efe622b 100644 --- a/examples/buttons/CMakeLists.txt +++ b/examples/buttons/CMakeLists.txt @@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME buttons) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/desktop/CMakeLists.txt b/examples/desktop/CMakeLists.txt index b64031e3..97a461c5 100644 --- a/examples/desktop/CMakeLists.txt +++ b/examples/desktop/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME desktop) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/frames/CMakeLists.txt b/examples/frames/CMakeLists.txt index f1a039fa..a72b6c94 100644 --- a/examples/frames/CMakeLists.txt +++ b/examples/frames/CMakeLists.txt @@ -10,7 +10,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME frames) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/gallery/CMakeLists.txt b/examples/gallery/CMakeLists.txt index c390ccca..379fbb4d 100644 --- a/examples/gallery/CMakeLists.txt +++ b/examples/gallery/CMakeLists.txt @@ -49,7 +49,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME gallery) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/glabels/CMakeLists.txt b/examples/glabels/CMakeLists.txt index a6f463cc..c43253c6 100644 --- a/examples/glabels/CMakeLists.txt +++ b/examples/glabels/CMakeLists.txt @@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME glabels) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/iotdashboard/CMakeLists.txt b/examples/iotdashboard/CMakeLists.txt index 2e645217..5b04432f 100644 --- a/examples/iotdashboard/CMakeLists.txt +++ b/examples/iotdashboard/CMakeLists.txt @@ -69,7 +69,7 @@ list(APPEND TARGET_RESSOURCES set(TARGET_NAME iotdashboard) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) @@ -87,13 +87,13 @@ if(TARGET Qsk::qskinny) target_link_libraries(${TARGET_NAME} PRIVATE Qsk::qskinny - ${Qt}::Svg) + Qt::Svg) else() target_link_libraries(${TARGET_NAME} PRIVATE qskinny qsktestsupport - ${Qt}::Svg) + Qt::Svg) target_compile_definitions(${TARGET_NAME} PRIVATE diff --git a/examples/layouts/CMakeLists.txt b/examples/layouts/CMakeLists.txt index 1671b7c9..f6af2099 100644 --- a/examples/layouts/CMakeLists.txt +++ b/examples/layouts/CMakeLists.txt @@ -22,7 +22,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME layouts) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/listbox/CMakeLists.txt b/examples/listbox/CMakeLists.txt index d02b9227..5ab4c420 100644 --- a/examples/listbox/CMakeLists.txt +++ b/examples/listbox/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME listbox) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/messagebox/CMakeLists.txt b/examples/messagebox/CMakeLists.txt index acfa5e4c..3801e403 100644 --- a/examples/messagebox/CMakeLists.txt +++ b/examples/messagebox/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME messagebox) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/messageboxQml/CMakeLists.txt b/examples/messageboxQml/CMakeLists.txt index 93936fa5..eda4b65f 100644 --- a/examples/messageboxQml/CMakeLists.txt +++ b/examples/messageboxQml/CMakeLists.txt @@ -6,7 +6,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME messageboxQml) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_RESSOURCES}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/examples/mycontrols/CMakeLists.txt b/examples/mycontrols/CMakeLists.txt index 2b1bd227..c99f285c 100644 --- a/examples/mycontrols/CMakeLists.txt +++ b/examples/mycontrols/CMakeLists.txt @@ -11,7 +11,7 @@ list(APPEND TARGET_HEADERS set(TARGET_NAME mycontrols) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/qvgviewer/CMakeLists.txt b/examples/qvgviewer/CMakeLists.txt index 124d50af..87ea3e66 100644 --- a/examples/qvgviewer/CMakeLists.txt +++ b/examples/qvgviewer/CMakeLists.txt @@ -22,7 +22,7 @@ list(APPEND TARGET_QVGS set(TARGET_NAME qvgviewer) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES} diff --git a/examples/tabview/CMakeLists.txt b/examples/tabview/CMakeLists.txt index 737693ef..c421f75f 100644 --- a/examples/tabview/CMakeLists.txt +++ b/examples/tabview/CMakeLists.txt @@ -11,7 +11,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME tabview) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/examples/thumbnails/CMakeLists.txt b/examples/thumbnails/CMakeLists.txt index e743e583..d294a19a 100644 --- a/examples/thumbnails/CMakeLists.txt +++ b/examples/thumbnails/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME thumbnails) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/inputcontext/CMakeLists.txt b/inputcontext/CMakeLists.txt index ba093f9b..fc6012bb 100644 --- a/inputcontext/CMakeLists.txt +++ b/inputcontext/CMakeLists.txt @@ -23,7 +23,7 @@ if(ENABLE_HUNSPELL) ${CMAKE_SOURCE_DIR}/src/inputpanel/QskHunspellTextPredictor.cpp) endif() -add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) +qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_OTHER_FILES}) if(ENABLE_PINYIN) target_link_libraries(${TARGET_NAME} @@ -47,7 +47,7 @@ endif() target_link_libraries(${TARGET_NAME} PRIVATE qskinny - ${Qt}::GuiPrivate) + Qt::GuiPrivate) set_target_properties(${TARGET_NAME} PROPERTIES AUTOMOC ON) diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt index 2e518423..37a0cae7 100644 --- a/playground/CMakeLists.txt +++ b/playground/CMakeLists.txt @@ -7,17 +7,17 @@ add_subdirectory(images) add_subdirectory(shadows) if (Qt_VERSION_MAJOR VERSION_EQUAL "6") - if(TARGET ${Qt}::WebEngineCore) - if(TARGET ${Qt}::WebEngineQuick) + if(TARGET Qt::WebEngineCore) + if(TARGET Qt::WebEngineQuick) add_subdirectory(webview) endif() endif() elseif(Qt_VERSION VERSION_EQUAL "5") - if(TARGET ${Qt}::WebEngine) + if(TARGET Qt::WebEngine) add_subdirectory(webview) endif() endif() -if(TARGET ${Qt}::QuickWidgets) +if(TARGET Qt::QuickWidgets) add_subdirectory(grids) endif() diff --git a/playground/anchors/CMakeLists.txt b/playground/anchors/CMakeLists.txt index 70d1ec41..201d3305 100644 --- a/playground/anchors/CMakeLists.txt +++ b/playground/anchors/CMakeLists.txt @@ -20,7 +20,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME anchors) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) diff --git a/playground/dialogbuttons/CMakeLists.txt b/playground/dialogbuttons/CMakeLists.txt index afdc238a..7109270c 100644 --- a/playground/dialogbuttons/CMakeLists.txt +++ b/playground/dialogbuttons/CMakeLists.txt @@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES Window.cpp main.cpp) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) target_link_libraries(${TARGET_NAME} PRIVATE diff --git a/playground/dials/CMakeLists.txt b/playground/dials/CMakeLists.txt index a25a8bc3..d10a209a 100644 --- a/playground/dials/CMakeLists.txt +++ b/playground/dials/CMakeLists.txt @@ -16,7 +16,7 @@ list(APPEND TARGET_RESSOURCES set(TARGET_NAME dials) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) diff --git a/playground/grids/CMakeLists.txt b/playground/grids/CMakeLists.txt index ddf0a57a..62fdf9b5 100644 --- a/playground/grids/CMakeLists.txt +++ b/playground/grids/CMakeLists.txt @@ -18,7 +18,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME grid) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) @@ -26,7 +26,7 @@ target_link_libraries(${TARGET_NAME} PRIVATE qskinny qsktestsupport - ${Qt}::QuickWidgets) + Qt::QuickWidgets) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/playground/images/CMakeLists.txt b/playground/images/CMakeLists.txt index 969af8e9..47acbc84 100644 --- a/playground/images/CMakeLists.txt +++ b/playground/images/CMakeLists.txt @@ -10,7 +10,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME images) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) diff --git a/playground/inputpanel/CMakeLists.txt b/playground/inputpanel/CMakeLists.txt index 70c3b21b..b06ceeac 100644 --- a/playground/inputpanel/CMakeLists.txt +++ b/playground/inputpanel/CMakeLists.txt @@ -3,7 +3,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME inputpanel) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) target_link_libraries(${TARGET_NAME} diff --git a/playground/invoker/CMakeLists.txt b/playground/invoker/CMakeLists.txt index 9560b690..ef4afc3a 100644 --- a/playground/invoker/CMakeLists.txt +++ b/playground/invoker/CMakeLists.txt @@ -9,7 +9,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME invoker) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES} ${TARGET_HEADERS}) diff --git a/playground/shadows/CMakeLists.txt b/playground/shadows/CMakeLists.txt index c92e5238..054bdfbf 100644 --- a/playground/shadows/CMakeLists.txt +++ b/playground/shadows/CMakeLists.txt @@ -7,7 +7,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME shadows) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_HEADERS} ${TARGET_SOURCES}) diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt index 6be06743..55f673a0 100644 --- a/playground/webview/CMakeLists.txt +++ b/playground/webview/CMakeLists.txt @@ -4,7 +4,7 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME webview) -add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE +qt_add_executable(${TARGET_NAME} WIN32 MACOSX_BUNDLE ${TARGET_SOURCES}) target_link_libraries(${TARGET_NAME} @@ -15,13 +15,13 @@ target_link_libraries(${TARGET_NAME} if (Qt_VERSION_MAJOR VERSION_GREATER "5") target_link_libraries(${TARGET_NAME} PRIVATE - ${Qt}::WebEngineQuick - ${Qt}::WebEngineQuickPrivate) + Qt::WebEngineQuick + Qt::WebEngineQuickPrivate) else() target_link_libraries(${TARGET_NAME} PRIVATE - ${Qt}::WebEngine - ${Qt}::WebEnginePrivate) + Qt::WebEngine + Qt::WebEnginePrivate) endif() set_target_properties(${TARGET_NAME} diff --git a/qmlexport/CMakeLists.txt b/qmlexport/CMakeLists.txt index 4bd6b8fa..82894705 100644 --- a/qmlexport/CMakeLists.txt +++ b/qmlexport/CMakeLists.txt @@ -13,7 +13,7 @@ list(APPEND TARGET_SOURCES QskMainQml.cpp QskQml.cpp) -add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) +qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) set_target_properties(${TARGET_NAME} PROPERTIES diff --git a/skins/material3/CMakeLists.txt b/skins/material3/CMakeLists.txt index c117b02e..0df4d1f2 100644 --- a/skins/material3/CMakeLists.txt +++ b/skins/material3/CMakeLists.txt @@ -15,9 +15,9 @@ list(APPEND TARGET_OTHER_FILES metadata.json) if(BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + qt_add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) else() - add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + qt_add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) endif() target_link_libraries(${TARGET_NAME} PRIVATE qskinny) diff --git a/skins/squiek/CMakeLists.txt b/skins/squiek/CMakeLists.txt index 47c120e3..1adabe6c 100644 --- a/skins/squiek/CMakeLists.txt +++ b/skins/squiek/CMakeLists.txt @@ -15,9 +15,9 @@ list(APPEND TARGET_OTHER_FILES metadata.json) if(BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + qt_add_library(${TARGET_NAME} SHARED ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) else() - add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) + qt_add_library(${TARGET_NAME} STATIC ${TARGET_HEADERS} ${TARGET_SOURCES} ${TARGET_OTHER_FILES}) endif() target_link_libraries(${TARGET_NAME} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ed4b122b..4ab964ad 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -379,9 +379,9 @@ endif() set(TARGET_NAME qskinny) if(BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) else() - add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) + qt_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS} ${TARGET_RESSOURCES}) endif() if(BUILD_QSKDLL) @@ -408,16 +408,16 @@ target_include_directories(${TARGET_NAME} target_link_libraries(${TARGET_NAME} PUBLIC - ${Qt}::Core - ${Qt}::CorePrivate - ${Qt}::Quick - ${Qt}::QuickPrivate) + Qt::Core + Qt::CorePrivate + Qt::Quick + Qt::QuickPrivate) if (Qt_VERSION_MAJOR VERSION_GREATER "5") target_link_libraries(${TARGET_NAME} PUBLIC - ${Qt}::OpenGL - ${Qt}::OpenGLPrivate) + Qt::OpenGL + Qt::OpenGLPrivate) endif() if(ENABLE_HUNSPELL) diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index a1bec638..ac672a4e 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -14,9 +14,9 @@ list(APPEND TARGET_SOURCES set(TARGET_NAME qsktestsupport) if (BUILD_QSKDLL) - add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) + qt_add_library(${TARGET_NAME} SHARED ${TARGET_SOURCES} ${TARGET_HEADERS}) else() - add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS}) + qt_add_library(${TARGET_NAME} STATIC ${TARGET_SOURCES} ${TARGET_HEADERS}) endif() if(ENABLE_FONT_CONFIG) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index bc768dd1..74da26cc 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,3 +1,3 @@ -if(TARGET ${Qt}::Svg) +if(TARGET Qt::Svg) add_subdirectory(svg2qvg) endif() \ No newline at end of file diff --git a/tools/svg2qvg/CMakeLists.txt b/tools/svg2qvg/CMakeLists.txt index cd2f559d..30f3bc04 100644 --- a/tools/svg2qvg/CMakeLists.txt +++ b/tools/svg2qvg/CMakeLists.txt @@ -1,7 +1,7 @@ set(TARGET_NAME svg2qvg) set(TARGET_SOURCES main.cpp) -add_executable(${TARGET_NAME} ${TARGET_SOURCES}) +qt_add_executable(${TARGET_NAME} ${TARGET_SOURCES}) if(BUILD_SVG2QVG_STANDALONE) @@ -36,14 +36,14 @@ if(BUILD_SVG2QVG_STANDALONE) target_link_libraries(${TARGET_NAME} PRIVATE - ${Qt}::Gui - ${Qt}::GuiPrivate - ${Qt}::Svg) + Qt::Gui + Qt::GuiPrivate + Qt::Svg) else() target_link_libraries(${TARGET_NAME} PRIVATE qskinny - ${Qt}::Svg) + Qt::Svg) endif() set_target_properties(${TARGET_NAME} From 1e06a7aef2b4528e65f22960038d1eb6ce584594 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Tue, 20 Dec 2022 14:21:29 +0100 Subject: [PATCH 74/77] populate cmake prefix path --- .github/workflows/cmake.yml | 14 ++++- .../iotdashboard_smoketest/CMakeLists.txt | 57 ++++--------------- 2 files changed, 24 insertions(+), 47 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 5c77f6f7..39dc1249 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -35,6 +35,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", + qtprefixpath: "../Qt/5.15.2/msvc2019_64", }, screenshot_filename: "windows-latest-msvc-qt-5-15-2.jpg", } @@ -53,6 +54,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", + qtprefixpath: "../Qt/6.2.4/msvc2019_64", }, screenshot_filename: "windows-latest-msvc-qt-6-2-4.jpg", } @@ -71,6 +73,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/msvc2019_64/lib/cmake/Qt5", + qtprefixpath: "../Qt/5.15.2/msvc2019_64", }, screenshot_filename: "windows-2019-msvc-qt-5-15-2.jpg", } @@ -89,6 +92,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/msvc2019_64/lib/cmake/Qt6", + qtprefixpath: "../Qt/6.2.4/msvc2019_64", }, screenshot_filename: "windows-2019-msvc-qt-6-2-4.jpg", } @@ -107,6 +111,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", + qtprefixpath: "../Qt/5.15.2/gcc_64", }, screenshot_filename: "ubuntu-latest-gcc-qt-5-15-2.jpg", } @@ -125,6 +130,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", + qtprefixpath: "../Qt/6.2.4/gcc_64", }, screenshot_filename: "ubuntu-latest-gcc-qt-6-2-4.jpg", } @@ -143,6 +149,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/gcc_64/lib/cmake/Qt5", + qtprefixpath: "../Qt/5.15.2/gcc_64", }, screenshot_filename: "ubuntu-latest-gcc-9-qt-5-15-2.jpg", } @@ -161,6 +168,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/gcc_64/lib/cmake/Qt6", + qtprefixpath: "../Qt/6.2.4/gcc_64", }, screenshot_filename: "ubuntu-latest-gcc-9-qt-6-2-4.jpg", } @@ -178,6 +186,7 @@ jobs: qtversion: "5.15.2", qtdirkey: "Qt5_DIR", qtdirvalue: "../Qt/5.15.2/clang_64/lib/cmake/Qt5", + qtprefixpath: "../Qt/5.15.2/clang_64", }, screenshot_filename: "macos-latest-clang-qt-5-15-2.jpg", } @@ -195,6 +204,7 @@ jobs: qtversion: "6.2.4", qtdirkey: "Qt6_DIR", qtdirvalue: "../Qt/6.2.4/clang_64/lib/cmake/Qt6", + qtprefixpath: "../Qt/6.2.4/clang_64", }, screenshot_filename: "macos-latest-clang-qt-6-2-4.jpg", } @@ -343,7 +353,7 @@ jobs: -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_INSTALL_PREFIX:PATH=qskinny_install \ - -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" + -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixpath }}" - name: Build ( QSkinny ) shell: bash @@ -414,7 +424,7 @@ jobs: -B qskinny_build_test \ -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ - -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \ + -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixpath }}" \ -DQSkinny_DIR:PATH=$GITHUB_WORKSPACE/qskinny_install/lib/cmake/QSkinny - name: Build ( CMake Integration Test ) diff --git a/examples/iotdashboard_smoketest/CMakeLists.txt b/examples/iotdashboard_smoketest/CMakeLists.txt index 3d65b45c..2ee64519 100644 --- a/examples/iotdashboard_smoketest/CMakeLists.txt +++ b/examples/iotdashboard_smoketest/CMakeLists.txt @@ -4,54 +4,21 @@ project(iotdashboard_smoketest) find_package(QSkinny REQUIRED) -if("${Qt5_DIR}" STREQUAL "" AND "${Qt6_DIR}" STREQUAL "") - message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") +find_package(Qt6 COMPONENTS Core QUIET) +if (NOT Qt6_FOUND) + find_package(Qt5 5.15 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) + find_package(Qt5 5.15 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) + message(WARNING "using QSkinny's 'qt_add_executable()'") + function(qt_add_executable) + add_executable(${ARGV}) + endfunction(qt_add_executable) + message(WARNING "using QSkinny's 'qt_add_library()'") + function(qt_add_library) + add_library(${ARGV}) + endfunction(qt_add_library) else() - # force include Qt's private headers - if(NOT "${Qt5_DIR}" STREQUAL "") - set(Qt5Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt5Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - elseif(NOT "${Qt6_DIR}" STREQUAL "") - #set(Qt6Core_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Gui_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6OpenGL_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Quick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6QuickWidgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Svg_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6WebEngine_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6WebEngineCore_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - set(Qt6WebEngineQuick_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - #set(Qt6Widgets_FIND_COMPONENTS Private CACHE STRING "force include private headers" FORCE) - endif() -endif() - -if(NOT "${Qt5_DIR}" STREQUAL "") - find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) - find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) - set(Qt Qt${Qt5_VERSION_MAJOR}) - set(Qt_VERSION ${Qt5_VERSION}) - set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) - set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) - set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) -elseif(NOT "${Qt6_DIR}" STREQUAL "") - - string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) - find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) - set(Qt Qt${Qt6_VERSION_MAJOR}) - set(Qt_VERSION ${Qt6_VERSION}) - set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) - set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) - set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) endif() add_subdirectory(../iotdashboard ${CMAKE_CURRENT_BINARY_DIR}/../iotdashboard) \ No newline at end of file From 647a9e2e80fdfc2166649e922a75b4384de15726 Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Tue, 20 Dec 2022 15:23:59 +0100 Subject: [PATCH 75/77] using find_package QT --- .github/workflows/cmake.yml | 4 +++- CMakeLists.txt | 31 +++++-------------------------- playground/CMakeLists.txt | 2 +- playground/webview/CMakeLists.txt | 2 +- src/CMakeLists.txt | 2 +- 5 files changed, 11 insertions(+), 30 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 39dc1249..7ec4b307 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -353,7 +353,8 @@ jobs: -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_INSTALL_PREFIX:PATH=qskinny_install \ - -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixpath }}" + -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixpath }}" \ + -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" - name: Build ( QSkinny ) shell: bash @@ -425,6 +426,7 @@ jobs: -G "${{ matrix.config.generators }}" \ -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \ -DCMAKE_PREFIX_PATH:PATH="${{ matrix.config.cmake.qtprefixpath }}" \ + -D${{ matrix.config.cmake.qtdirkey }}:PATH="${{ matrix.config.cmake.qtdirvalue }}" \ -DQSkinny_DIR:PATH=$GITHUB_WORKSPACE/qskinny_install/lib/cmake/QSkinny - name: Build ( CMake Integration Test ) diff --git a/CMakeLists.txt b/CMakeLists.txt index a53aca91..1ca34ba3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,8 +10,8 @@ set(CMAKE_CXX_EXTENSIONS OFF) include(${CMAKE_SOURCE_DIR}/features/qskconfig.cmake) -find_package(Qt6 COMPONENTS Core QUIET) -if (NOT Qt6_FOUND) +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core) +if(QT_VERSION_MAJOR VERSION_EQUAL "5") find_package(Qt5 5.15 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) find_package(Qt5 5.15 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) message(WARNING "using QSkinny's 'qt_add_executable()'") @@ -22,34 +22,13 @@ if (NOT Qt6_FOUND) function(qt_add_library) add_library(${ARGV}) endfunction(qt_add_library) -else() +elseif(QT_VERSION_MAJOR VERSION_EQUAL "6") find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) +else() + message(FATAL_ERROR "Couldn't find any Qt version!") endif() -# find either Qt5 or Qt6 requred and optional components -#if(NOT "${Qt5_DIR}" STREQUAL "") -# find_package(Qt5 REQUIRED COMPONENTS Core Gui OpenGL Quick Svg Widgets) -# find_package(Qt5 OPTIONAL_COMPONENTS QuickWidgets WebEngine WebEngineCore) -# set(Qt Qt${Qt5_VERSION_MAJOR}) -# set(Qt_VERSION ${Qt5_VERSION}) -# set(Qt_VERSION_MAJOR ${Qt5_VERSION_MAJOR}) -# set(Qt_VERSION_MINOR ${Qt5_VERSION_MINOR}) -# set(Qt_VERSION_PATCH ${Qt5_VERSION_PATCH}) -#elseif(NOT "${Qt6_DIR}" STREQUAL "") -# string(REPLACE "/lib/cmake/Qt6" "" Qt6_PREFIX_DIR "${Qt6_DIR}") -# set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${Qt6_PREFIX_DIR}) -# find_package(Qt6 REQUIRED COMPONENTS Core Gui OpenGL Quick QuickWidgets Svg Widgets) -# find_package(Qt6 OPTIONAL_COMPONENTS QuickWidgets WebEngineCore WebEngineQuick) # check optional QuickWidgets Svg Widgets -# set(Qt Qt${Qt6_VERSION_MAJOR}) -# set(Qt_VERSION ${Qt6_VERSION}) -# set(Qt_VERSION_MAJOR ${Qt6_VERSION_MAJOR}) -# set(Qt_VERSION_MINOR ${Qt6_VERSION_MINOR}) -# set(Qt_VERSION_PATCH ${Qt6_VERSION_PATCH}) -#else() -# message(FATAL_ERROR "Neither Qt5_DIR nor Qt6_DIR defined!") -#endif() - # optional package hunspell if(NOT LINUX AND ENABLE_HUNSPELL) message(WARNING "Feature 'hunspell' only available for UNIX!") diff --git a/playground/CMakeLists.txt b/playground/CMakeLists.txt index 37a0cae7..de8abd04 100644 --- a/playground/CMakeLists.txt +++ b/playground/CMakeLists.txt @@ -6,7 +6,7 @@ add_subdirectory(inputpanel) add_subdirectory(images) add_subdirectory(shadows) -if (Qt_VERSION_MAJOR VERSION_EQUAL "6") +if (QT_VERSION_MAJOR VERSION_EQUAL "6") if(TARGET Qt::WebEngineCore) if(TARGET Qt::WebEngineQuick) add_subdirectory(webview) diff --git a/playground/webview/CMakeLists.txt b/playground/webview/CMakeLists.txt index 55f673a0..686c538c 100644 --- a/playground/webview/CMakeLists.txt +++ b/playground/webview/CMakeLists.txt @@ -12,7 +12,7 @@ target_link_libraries(${TARGET_NAME} qskinny qsktestsupport) -if (Qt_VERSION_MAJOR VERSION_GREATER "5") +if (QT_VERSION_MAJOR VERSION_GREATER "5") target_link_libraries(${TARGET_NAME} PRIVATE Qt::WebEngineQuick diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4ab964ad..ec44ccc9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -413,7 +413,7 @@ target_link_libraries(${TARGET_NAME} Qt::Quick Qt::QuickPrivate) -if (Qt_VERSION_MAJOR VERSION_GREATER "5") +if (QT_VERSION_MAJOR VERSION_GREATER "5") target_link_libraries(${TARGET_NAME} PUBLIC Qt::OpenGL From d82a050b1521109f5307668e25e35ea010da503d Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Wed, 21 Dec 2022 15:38:26 +0100 Subject: [PATCH 76/77] try use cmake 3.16 on windows --- .github/workflows/cmake.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 7ec4b307..9f86ecb6 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -223,7 +223,8 @@ jobs: - name: Install dependencies on windows if: startsWith(matrix.config.os, 'windows') run: | - choco install ninja cmake + choco install ninja + choco install cmake --version=3.16.0 ninja --version cmake --version From dbf8cf65db4752da02fa237e820dd58354f4d37d Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Wed, 21 Dec 2022 16:07:16 +0100 Subject: [PATCH 77/77] use explicit cmake patch version version --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9f86ecb6..111586f1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -224,7 +224,7 @@ jobs: if: startsWith(matrix.config.os, 'windows') run: | choco install ninja - choco install cmake --version=3.16.0 + choco install cmake --version=3.16.3 ninja --version cmake --version