diff --git a/CMakeLists.txt b/CMakeLists.txt index 8546c05597..069660aa18 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,41 +267,6 @@ macro(add_flag_if_supported flag name) append_if("CXX_SUPPORTS_${name}" "${flag}" CMAKE_CXX_FLAGS) endmacro() -function(check_private_headers_exist module) - message(STATUS "Checking whether private include directories for module ${module} exist") - # backward compatibility with Qt < 5.9 - if(TARGET Qt5::${module}Private) - get_target_property(private_includes Qt5::${module}Private INTERFACE_INCLUDE_DIRECTORIES) - set(Qt5${module}_PRIVATE_INCLUDE_DIRS "${private_includes}" PARENT_SCOPE) - endif() - - # HACK to work around broken Qt cmake configurations in older Qt version (up to 5.7 at least) - if(NOT "${Qt5${module}_PRIVATE_INCLUDE_DIRS}" MATCHES "/Qt${module}/") - string(REPLACE "/QtCore" "/Qt${module}" replaceme "${Qt5Core_PRIVATE_INCLUDE_DIRS}") - list(APPEND Qt5${module}_PRIVATE_INCLUDE_DIRS ${replaceme}) - list(REMOVE_DUPLICATES Qt5${module}_PRIVATE_INCLUDE_DIRS) - set(Qt5${module}_PRIVATE_INCLUDE_DIRS ${Qt5${module}_PRIVATE_INCLUDE_DIRS} PARENT_SCOPE) - endif() - - foreach(dir ${Qt5${module}_PRIVATE_INCLUDE_DIRS}) - if(NOT EXISTS "${dir}") - message(FATAL_ERROR "The private include directory ${dir} for module ${module} do not exist! Please make sure your Qt5 installation contains private headers.\nThe required directories:\n ${Qt5${module}_PRIVATE_INCLUDE_DIRS}") - endif() - endforeach() -endfunction() - -function(check_private_header_exists module file) - set(found FALSE) - foreach(dir ${Qt5${module}_PRIVATE_INCLUDE_DIRS}) - if(EXISTS "${dir}/${file}") - set(found TRUE) - endif() - endforeach() - if(NOT found) - message(FATAL_ERROR "The private include file ${file} was not found in directory ${Qt5${module}_PRIVATE_INCLUDE_DIRS}! Please make sure your Qt5 installation contains private headers.") - endif() -endfunction() - set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) @@ -431,6 +396,7 @@ find_package(Qt5IviCore 1.1 NO_MODULE QUIET) # 1.1 is based on 5.8 find_package(Qt5IviVehicleFunctions 1.1 NO_MODULE QUIET) find_package(Qt5IviMedia 1.1 NO_MODULE QUIET) find_package(Qt5Scxml 5.8 NO_MODULE QUIET) +include (Qt5LegacySupport) if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND Qt5Core_VERSION VERSION_EQUAL 5.9.1) # hide -Wc++1z-extensions warnings in this Qt version -- see: https://bugreports.qt.io/browse/QTBUG-61840 @@ -460,29 +426,6 @@ if(GAMMARAY_BUILD_UI) # widgets are required for the UI endif() endif() -# Sanity checking, we need private includes for the following modules, and < Qt 5.9 backward compatibility -check_private_headers_exist(Core) -check_private_header_exists(Core "private/qobject_p.h") -check_private_headers_exist(Gui) -list(APPEND Qt5Gui_PRIVATE_INCLUDE_DIRS ${Qt5Core_PRIVATE_INCLUDE_DIRS}) -if(Qt5Widgets_FOUND) - check_private_headers_exist(Widgets) - list(APPEND Qt5Widgets_PRIVATE_INCLUDE_DIRS ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) -endif() -if(Qt5Qml_FOUND) - check_private_headers_exist(Qml) - check_private_header_exists(Qml "private/qqmlabstractbinding_p.h") - list(APPEND Qt5Qml_PRIVATE_INCLUDE_DIRS ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) -endif() -if(Qt5Quick_FOUND) - check_private_headers_exist(Quick) - check_private_header_exists(Quick "private/qquickitem_p.h") - list(APPEND Qt5Quick_PRIVATE_INCLUDE_DIRS ${Qt5Qml_PRIVATE_INCLUDE_DIRS}) -endif() -if(Qt5Scxml_FOUND) - check_private_headers_exist(Scxml) -endif() - set(HAVE_QT_CONCURRENT ${Qt5Concurrent_FOUND}) set(HAVE_QT_WIDGETS ${Qt5Widgets_FOUND}) set(HAVE_QT_SVG ${Qt5Svg_FOUND}) diff --git a/cmake/Qt5LegacySupport.cmake b/cmake/Qt5LegacySupport.cmake new file mode 100644 index 0000000000..e1ecf33fdd --- /dev/null +++ b/cmake/Qt5LegacySupport.cmake @@ -0,0 +1,59 @@ +# Backward compatibility helpers with ancient Qt5 versions + +# Copyright (c) 2021 Klarälvdalens Datakonsult AB, a KDAB Group company +# All rights reserved. +# +# Author: Volker Krause +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +macro(_create_private_target LIB) + if (NOT TARGET Qt::${LIB}Private AND NOT TARGET Qt5::${LIB}Private AND DEFINED Qt5${LIB}_PRIVATE_INCLUDE_DIRS) + # HACK to work around broken Qt cmake configurations in older Qt version (up to 5.7 at least) + if(NOT "${Qt5${LIB}_PRIVATE_INCLUDE_DIRS}" MATCHES "/Qt${LIB}/") + string(REPLACE "/QtCore" "/Qt${LIB}" replaceme "${Qt5Core_PRIVATE_INCLUDE_DIRS}") + list(APPEND Qt5${module}_PRIVATE_INCLUDE_DIRS ${replaceme}) + list(REMOVE_DUPLICATES Qt5${LIB}_PRIVATE_INCLUDE_DIRS) + set(Qt5${module}_PRIVATE_INCLUDE_DIRS ${Qt5${LIB}_PRIVATE_INCLUDE_DIRS} PARENT_SCOPE) + endif() + + add_library(Qt5::${LIB}Private INTERFACE IMPORTED) + set_target_properties(Qt5::${LIB}Private PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Qt5${LIB}_PRIVATE_INCLUDE_DIRS}" + ) + if (DEFINED ARGN) + set_target_properties(Qt5::${LIB}Private PROPERTIES + INTERFACE_LINK_LIBRARIES ${ARGN} + ) + endif() + endif() +endmacro() + +_create_private_target(Core) +_create_private_target(Gui Core) +_create_private_target(IviCore Core) +_create_private_target(Qml Gui) +_create_private_target(Quick Qml) +_create_private_target(Scxml Core) +_create_private_target(Widgets Gui) diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 228642129d..3159ac9619 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -121,12 +121,15 @@ gammaray_target_relocatable_interfaces(gammaray_core_ipaths) target_include_directories(gammaray_core PUBLIC $ $) target_include_directories(gammaray_core SYSTEM PRIVATE ${CMAKE_SOURCE_DIR}/3rdparty/backward-cpp - ${Qt5Core_PRIVATE_INCLUDE_DIRS} - ${Qt5Gui_PRIVATE_INCLUDE_DIRS} ) target_link_libraries(gammaray_core LINK_PUBLIC gammaray_common - LINK_PRIVATE gammaray_common_internal gammaray_kitemmodels ${CMAKE_DL_LIBS} + LINK_PRIVATE + gammaray_common_internal + gammaray_kitemmodels + ${CMAKE_DL_LIBS} + Qt5::CorePrivate + Qt5::GuiPrivate ) set_target_properties(gammaray_core PROPERTIES ${GAMMARAY_DEFAULT_LIBRARY_PROPERTIES} @@ -134,7 +137,7 @@ set_target_properties(gammaray_core PROPERTIES ) gammaray_set_rpath(gammaray_core ${LIB_INSTALL_DIR}) -target_link_libraries(gammaray_core LINK_PUBLIC Qt5::Core LINK_PRIVATE Qt5::Gui) +target_link_libraries(gammaray_core LINK_PUBLIC Qt5::Core LINK_PRIVATE Qt5::Gui Qt5::GuiPrivate) if (TARGET Qt5::AndroidExtras) target_link_libraries(gammaray_core LINK_PRIVATE Qt5::AndroidExtras) endif() diff --git a/launcher/core/injector/CMakeLists.txt b/launcher/core/injector/CMakeLists.txt index 76b1bc30c1..f056f7de86 100644 --- a/launcher/core/injector/CMakeLists.txt +++ b/launcher/core/injector/CMakeLists.txt @@ -3,10 +3,11 @@ if(Qt5Widgets_FOUND) add_library(gammaray_injector_style MODULE ${gammaray_injector_style_srcs}) - target_include_directories(gammaray_injector_style SYSTEM PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) target_link_libraries(gammaray_injector_style Qt5::Core - Qt5::Gui Qt5::Widgets + Qt5::Gui + Qt5::Widgets + Qt5::GuiPrivate ) set_target_properties(gammaray_injector_style diff --git a/plugins/eventmonitor/CMakeLists.txt b/plugins/eventmonitor/CMakeLists.txt index 0c457562b3..a645ba51a2 100644 --- a/plugins/eventmonitor/CMakeLists.txt +++ b/plugins/eventmonitor/CMakeLists.txt @@ -14,9 +14,9 @@ gammaray_add_plugin(gammaray_eventmonitor_plugin SOURCES ${gammaray_eventmonitor_plugin_srcs} ) -target_include_directories(gammaray_eventmonitor_plugin SYSTEM PRIVATE ${Qt5Core_PRIVATE_INCLUDE_DIRS}) target_link_libraries(gammaray_eventmonitor_plugin Qt5::Gui + Qt5::CorePrivate gammaray_core ) endif() diff --git a/plugins/guisupport/CMakeLists.txt b/plugins/guisupport/CMakeLists.txt index 479056f4c6..b0aab1af4a 100644 --- a/plugins/guisupport/CMakeLists.txt +++ b/plugins/guisupport/CMakeLists.txt @@ -7,8 +7,7 @@ set(gammaray_guisupport_srcs ) gammaray_add_plugin(gammaray_guisupport JSON gammaray_guisupport.json SOURCES ${gammaray_guisupport_srcs}) target_link_libraries(gammaray_guisupport gammaray_core) -target_include_directories(gammaray_guisupport SYSTEM PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) -target_link_libraries(gammaray_guisupport Qt5::Gui) +target_link_libraries(gammaray_guisupport Qt5::Gui Qt5::GuiPrivate) endif() # ui plugin diff --git a/plugins/positioning/CMakeLists.txt b/plugins/positioning/CMakeLists.txt index f24a49d0e7..f9aac576fa 100644 --- a/plugins/positioning/CMakeLists.txt +++ b/plugins/positioning/CMakeLists.txt @@ -18,10 +18,10 @@ if (NOT Qt5Core_VERSION VERSION_LESS 5.7) add_library(gammaray_geopositioninfosource MODULE ${gammaray_geopositioninfosource_srcs}) target_compile_features(gammaray_geopositioninfosource PUBLIC ${GAMMARAY_REQUIRED_CXX_FEATURES}) - target_include_directories(gammaray_geopositioninfosource SYSTEM PRIVATE ${Qt5Core_PRIVATE_INCLUDE_DIRS}) target_link_libraries(gammaray_geopositioninfosource gammaray_common Qt5::Positioning + Qt5::CorePrivate ) install(TARGETS gammaray_geopositioninfosource DESTINATION ${TARGET_PLUGIN_INSTALL_DIR}/position) endif() diff --git a/plugins/qmlsupport/CMakeLists.txt b/plugins/qmlsupport/CMakeLists.txt index a0d62a986c..054a7ca84d 100644 --- a/plugins/qmlsupport/CMakeLists.txt +++ b/plugins/qmlsupport/CMakeLists.txt @@ -12,8 +12,11 @@ set(gammaray_qmlsupport_srcs ) gammaray_add_plugin(gammaray_qmlsupport JSON gammaray_qmlsupport.json SOURCES ${gammaray_qmlsupport_srcs}) -target_include_directories(gammaray_qmlsupport SYSTEM PRIVATE ${Qt5Qml_PRIVATE_INCLUDE_DIRS}) -target_link_libraries(gammaray_qmlsupport gammaray_core Qt5::Qml) +target_link_libraries(gammaray_qmlsupport + gammaray_core + Qt5::Qml + Qt5::QmlPrivate +) endif() diff --git a/plugins/qtivi/CMakeLists.txt b/plugins/qtivi/CMakeLists.txt index dd60f5a633..fc59e735de 100644 --- a/plugins/qtivi/CMakeLists.txt +++ b/plugins/qtivi/CMakeLists.txt @@ -9,8 +9,11 @@ if(Qt5IviCore_FOUND) set(plugin_files ${plugin_files} qtivipropertymodel.cpp qtivipropertyoverrider.cpp) endif() gammaray_add_plugin(gammaray_qtivi JSON gammaray_qtivi.json SOURCES ${plugin_files}) - target_include_directories(gammaray_qtivi SYSTEM PRIVATE ${Qt5IviCore_PRIVATE_INCLUDE_DIRS}) - target_link_libraries(gammaray_qtivi gammaray_core Qt5::IviCore) + target_link_libraries(gammaray_qtivi + gammaray_core + Qt5::IviCore + Qt5::IviCorePrivate + ) if(Qt5IviVehicleFunctions_FOUND) target_link_libraries(gammaray_qtivi Qt5::IviVehicleFunctions) endif() diff --git a/plugins/quickinspector/CMakeLists.txt b/plugins/quickinspector/CMakeLists.txt index 08495d95f7..f65bd3c10c 100644 --- a/plugins/quickinspector/CMakeLists.txt +++ b/plugins/quickinspector/CMakeLists.txt @@ -44,10 +44,11 @@ if(Qt5Quick_FOUND) target_sources(gammaray_quickinspector PUBLIC ${CMAKE_CURRENT_LIST_DIR}/quickimplicitbindingdependencyprovider.cpp) endif() - target_include_directories(gammaray_quickinspector SYSTEM PRIVATE ${Qt5Quick_PRIVATE_INCLUDE_DIRS}) target_link_libraries(gammaray_quickinspector gammaray_quickinspector_shared - gammaray_core Qt5::Quick + gammaray_core + Qt5::Quick + Qt5::QuickPrivate gammaray_kitemmodels ) endif() diff --git a/plugins/statemachineviewer/CMakeLists.txt b/plugins/statemachineviewer/CMakeLists.txt index 3fda2f74a8..d8c3c1c3ad 100644 --- a/plugins/statemachineviewer/CMakeLists.txt +++ b/plugins/statemachineviewer/CMakeLists.txt @@ -29,8 +29,7 @@ target_link_libraries(gammaray_statemachineviewer_plugin ) if(Qt5Scxml_FOUND) - target_link_libraries(gammaray_statemachineviewer_plugin Qt5::Scxml) - target_include_directories(gammaray_statemachineviewer_plugin SYSTEM PRIVATE ${Qt5Scxml_PRIVATE_INCLUDE_DIRS}) + target_link_libraries(gammaray_statemachineviewer_plugin Qt5::Scxml Qt5::ScxmlPrivate) endif() endif() diff --git a/plugins/translatorinspector/CMakeLists.txt b/plugins/translatorinspector/CMakeLists.txt index c0caa5838e..960cd7effe 100644 --- a/plugins/translatorinspector/CMakeLists.txt +++ b/plugins/translatorinspector/CMakeLists.txt @@ -4,8 +4,7 @@ gammaray_add_plugin(gammaray_translatorinspector JSON gammaray_translatorinspector.json SOURCES translatorinspector.cpp translatorinspectorinterface.cpp translatorwrapper.cpp translatorsmodel.cpp ) -target_include_directories(gammaray_translatorinspector SYSTEM PRIVATE ${Qt5Core_PRIVATE_INCLUDE_DIRS}) -target_link_libraries(gammaray_translatorinspector gammaray_core Qt5::Core) +target_link_libraries(gammaray_translatorinspector gammaray_core Qt5::Core Qt5::CorePrivate) endif() # ui part diff --git a/probe/CMakeLists.txt b/probe/CMakeLists.txt index c33bac48af..79c62fe5f6 100644 --- a/probe/CMakeLists.txt +++ b/probe/CMakeLists.txt @@ -15,7 +15,7 @@ target_include_directories(gammaray_probe_obj PUBLIC $ $ ) -target_include_directories(gammaray_probe_obj SYSTEM PRIVATE ${Qt5Core_PRIVATE_INCLUDE_DIRS}) +target_link_libraries(gammaray_probe_obj Qt5::CorePrivate) # probe lib # DYLD_INSERT_LIBRARIES only works with real shared libraries, not modules diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 653744977b..34918dd5ad 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -207,8 +207,7 @@ gammaray_add_probe_test(propertymodeltest propertymodeltest.cpp $ ) - target_include_directories(methodmodeltest SYSTEM PRIVATE ${Qt5Core_PRIVATE_INCLUDE_DIRS}) - target_link_libraries(methodmodeltest gammaray_core Qt5::Gui Qt5::Widgets) + target_link_libraries(methodmodeltest gammaray_core Qt5::Gui Qt5::Widgets Qt5::CorePrivate) endif() endif() @@ -398,8 +396,7 @@ if(NOT GAMMARAY_CLIENT_ONLY_BUILD) ${CMAKE_SOURCE_DIR}/plugins/qmlsupport/qjsvaluepropertyadaptor.cpp ${CMAKE_SOURCE_DIR}/plugins/qmlsupport/qmlcontextpropertyadaptor.cpp ) - target_include_directories(qmlsupporttest SYSTEM PRIVATE ${Qt5Qml_PRIVATE_INCLUDE_DIRS}) - target_link_libraries(qmlsupporttest gammaray_core Qt5::Quick) + target_link_libraries(qmlsupporttest gammaray_core Qt5::Quick Qt5::QmlPrivate) endif() if(Qt5Quick_FOUND AND NOT Qt5Quick_VERSION VERSION_LESS 5.7) # requires MSVC 2013 or higher @@ -407,8 +404,7 @@ if(NOT GAMMARAY_CLIENT_ONLY_BUILD) bindinginspectortest.cpp $ ) - target_include_directories(bindinginspectortest SYSTEM PRIVATE ${Qt5Quick_PRIVATE_INCLUDE_DIRS}) - target_link_libraries(bindinginspectortest gammaray_core Qt5::Quick) + target_link_libraries(bindinginspectortest gammaray_core Qt5::Quick Qt5::QuickPrivate) target_sources(bindinginspectortest PUBLIC ${CMAKE_SOURCE_DIR}/plugins/quickinspector/quickimplicitbindingdependencyprovider.cpp ) @@ -424,8 +420,7 @@ if(NOT GAMMARAY_CLIENT_ONLY_BUILD) quickinspectortest.qrc $ ) - target_include_directories(quickinspectortest SYSTEM PRIVATE ${Qt5Quick_PRIVATE_INCLUDE_DIRS}) - target_link_libraries(quickinspectortest gammaray_core gammaray_quickinspector_shared Qt5::Quick) + target_link_libraries(quickinspectortest gammaray_core gammaray_quickinspector_shared Qt5::Quick Qt5::QuickPrivate) gammaray_add_quick_test(quickinspectortest2 quickinspectortest2.cpp @@ -467,8 +462,7 @@ if(NOT GAMMARAY_CLIENT_ONLY_BUILD) quickinspectortest.qrc $ ) - target_include_directories(quickmaterialtest SYSTEM PRIVATE ${Qt5Quick_PRIVATE_INCLUDE_DIRS}) - target_link_libraries(quickmaterialtest gammaray_core Qt5::Quick) + target_link_libraries(quickmaterialtest gammaray_core Qt5::Quick Qt5::QuickPrivate) endif() if(Qt5IviCore_FOUND AND Qt5IviVehicleFunctions_FOUND AND Qt5IviCore_VERSION VERSION_LESS 1.2) @@ -478,8 +472,7 @@ if(NOT GAMMARAY_CLIENT_ONLY_BUILD) ../plugins/qtivi/qtivipropertymodel.cpp $ ) - target_include_directories(qtivipropertymodeltest SYSTEM PRIVATE ${Qt5IviCore_PRIVATE_INCLUDE_DIRS}) - target_link_libraries(qtivipropertymodeltest Qt5::Gui Qt5::IviCore Qt5::IviVehicleFunctions) + target_link_libraries(qtivipropertymodeltest Qt5::Gui Qt5::IviCore Qt5::IviVehicleFunctions Qt5::IviCorePrivate) if(Qt5IviMedia_FOUND) target_link_libraries(qtivipropertymodeltest Qt5::IviMedia) endif() diff --git a/ui/CMakeLists.txt b/ui/CMakeLists.txt index 544f05113b..921c4f7906 100644 --- a/ui/CMakeLists.txt +++ b/ui/CMakeLists.txt @@ -100,11 +100,10 @@ target_compile_features(gammaray_ui PUBLIC ${GAMMARAY_REQUIRED_CXX_FEATURES}) gammaray_target_relocatable_interfaces(gammaray_ui_ipaths) target_include_directories(gammaray_ui PUBLIC $ $) -target_include_directories(gammaray_ui SYSTEM PRIVATE ${Qt5Widgets_PRIVATE_INCLUDE_DIRS}) target_link_libraries(gammaray_ui LINK_PUBLIC Qt5::Core Qt5::Gui Qt5::Widgets gammaray_common - LINK_PRIVATE gammaray_common_internal gammaray_kitemmodels + LINK_PRIVATE gammaray_common_internal gammaray_kitemmodels Qt5::WidgetsPrivate ) if(TARGET KF5::SyntaxHighlighting) target_link_libraries(gammaray_ui LINK_PRIVATE KF5::SyntaxHighlighting) @@ -121,10 +120,11 @@ set(gammaray_ui_internal_srcs add_library(gammaray_ui_internal STATIC ${gammaray_ui_internal_srcs}) set_target_properties(gammaray_ui_internal PROPERTIES POSITION_INDEPENDENT_CODE ON) target_compile_features(gammaray_ui_internal PUBLIC ${GAMMARAY_REQUIRED_CXX_FEATURES}) -target_include_directories(gammaray_ui_internal SYSTEM PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) target_link_libraries(gammaray_ui_internal Qt5::Core - Qt5::Gui Qt5::Widgets + Qt5::Gui + Qt5::Widgets + Qt5::GuiPrivate gammaray_common_internal gammaray_ui gammaray_kitemmodels