Add 2D and 3D as configurable features

This way we can just use Graphs in find_package, but be able to
use either 3D or 2D, or both, when configuring the module.

Fixes: QTBUG-119920
Pick-to: 6.7
Change-Id: I5caa0692587d04492e3e27906d27e2d3d3b7a3cc
Reviewed-by:  Alexey Edelev <alexey.edelev@qt.io>
This commit is contained in:
Tomi Korpipaa 2024-01-09 12:08:05 +02:00
parent d23a941bd9
commit d5313f8aa8
9 changed files with 96 additions and 53 deletions

View File

@ -23,6 +23,6 @@ macro(assertTargets)
endforeach()
endmacro()
assertTargets(Gui Widgets Quick QuickTest QuickWidgets Test Quick3D)
assertTargets(Gui Widgets Quick QuickTest QuickWidgets Test)
qt_build_repo()

7
configure.cmake Normal file
View File

@ -0,0 +1,7 @@
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
qt_extra_definition("QT_VERSION_STR" "\"${PROJECT_VERSION}\"" PUBLIC)
qt_extra_definition("QT_VERSION_MAJOR" ${PROJECT_VERSION_MAJOR} PUBLIC)
qt_extra_definition("QT_VERSION_MINOR" ${PROJECT_VERSION_MINOR} PUBLIC)
qt_extra_definition("QT_VERSION_PATCH" ${PROJECT_VERSION_PATCH} PUBLIC)

View File

@ -3,7 +3,12 @@
qt_examples_build_begin(EXTERNAL_BUILD)
add_subdirectory(graphs/3d)
add_subdirectory(graphs/2d)
if(QT_FEATURE_graphs_3d)
add_subdirectory(graphs/3d)
endif()
if(QT_FEATURE_graphs_2d)
add_subdirectory(graphs/2d)
endif()
qt_examples_build_end()

View File

@ -1,5 +1,22 @@
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
add_subdirectory(graphs3d)
add_subdirectory(graphs2d)
qt_feature_evaluate_features("${CMAKE_CURRENT_SOURCE_DIR}/graphs2d/configure.cmake")
qt_feature_evaluate_features("${CMAKE_CURRENT_SOURCE_DIR}/graphs3d/configure.cmake")
qt_configure_add_summary_section(NAME "Qt Graphs Support")
qt_configure_add_summary_entry(ARGS "graphs-2d")
qt_configure_add_summary_entry(ARGS "graphs-3d")
qt_configure_end_summary_section() # end of "Qt Graphs Support" section
if(QT_FEATURE_graphs_3d)
add_subdirectory(graphs3d)
endif()
if(QT_FEATURE_graphs_2d)
add_subdirectory(graphs2d)
endif()
if(NOT QT_FEATURE_graphs_2d AND NOT QT_FEATURE_graphs_3d)
message("You must have either FEATURE_graphs_2d or FEATURE_graphs_3d ON, or nothing will be built.")
endif()

View File

@ -0,0 +1,7 @@
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
qt_feature("graphs-2d" PUBLIC
LABEL "2D Graphs"
PURPOSE "Support for 2D graphs"
)

View File

@ -2,14 +2,14 @@
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
set(qml_files
"qml/designer/Bars3DSpecifics.qml"
"qml/designer/Scatter3DSpecifics.qml"
"qml/designer/Surface3DSpecifics.qml"
"qml/designer/GraphsCameraSection.qml"
"qml/designer/GraphsSection.qml"
"qml/designer/default/Bars3D.qml"
"qml/designer/default/Scatter3D.qml"
"qml/designer/default/Surface3D.qml"
qml/designer/Bars3DSpecifics.qml
qml/designer/Scatter3DSpecifics.qml
qml/designer/Surface3DSpecifics.qml
qml/designer/GraphsCameraSection.qml
qml/designer/GraphsSection.qml
qml/designer/default/Bars3D.qml
qml/designer/default/Scatter3D.qml
qml/designer/default/Surface3D.qml
)
set_source_files_properties(${qml_files} PROPERTIES
@ -25,8 +25,8 @@ qt_internal_add_qml_module(Graphs
DEPENDENCIES
QtQuick
QtQuick3D
QML_FILES
${qml_files}
QML_FILES
${qml_files}
SOURCES
axis/qabstract3daxis.cpp axis/qabstract3daxis.h axis/qabstract3daxis_p.h
axis/qcategory3daxis.cpp axis/qcategory3daxis.h axis/qcategory3daxis_p.h
@ -124,6 +124,7 @@ qt_internal_add_qml_module(Graphs
Qt::Quick3DRuntimeRenderPrivate
GENERATE_CPP_EXPORTS
)
set_source_files_properties("qml/resources/DatapointSphere.qml"
PROPERTIES QT_RESOURCE_ALIAS "DatapointSphere"
)
@ -513,6 +514,7 @@ qt_internal_extend_target(Graphs CONDITION MACOS
PRIVATE_MODULE_INTERFACE
Qt::GuiPrivate
)
qt_internal_add_docs(Graphs
doc/qtgraphs.qdocconf
)

View File

@ -1,7 +1,8 @@
# Copyright (C) 2023 The Qt Company Ltd.
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
qt_extra_definition("QT_VERSION_STR" "\"${PROJECT_VERSION}\"" PUBLIC)
qt_extra_definition("QT_VERSION_MAJOR" ${PROJECT_VERSION_MAJOR} PUBLIC)
qt_extra_definition("QT_VERSION_MINOR" ${PROJECT_VERSION_MINOR} PUBLIC)
qt_extra_definition("QT_VERSION_PATCH" ${PROJECT_VERSION_PATCH} PUBLIC)
qt_feature("graphs-3d" PUBLIC
LABEL "3D Graphs"
PURPOSE "Support for 3D graphs"
CONDITION TARGET Qt6::Quick3D
)

View File

@ -1,9 +1,11 @@
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
if(NOT ANDROID)
add_subdirectory(cpptest)
endif()
if(TARGET Qt::Quick AND NOT boot2qt)
add_subdirectory(qmltest)
if(QT_FEATURE_graphs_3d)
if(NOT ANDROID)
add_subdirectory(cpptest)
endif()
if(TARGET Qt::Quick AND NOT boot2qt)
add_subdirectory(qmltest)
endif()
endif()

View File

@ -1,32 +1,34 @@
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
if(TARGET Qt::Quick)
add_subdirectory(qmlbarsrowcolors)
add_subdirectory(qmlcustominput)
add_subdirectory(qmldynamicdata)
add_subdirectory(qmlgradient)
add_subdirectory(qmlheightmap)
add_subdirectory(qmllegend)
add_subdirectory(qmlmultitest)
add_subdirectory(qmlperf)
add_subdirectory(qmlsurfacelayers)
add_subdirectory(qmltheme)
add_subdirectory(qmlvolume)
endif()
if(NOT ANDROID AND NOT IOS AND NOT WINRT)
add_subdirectory(barstest)
add_subdirectory(custominput)
add_subdirectory(directional)
#add_subdirectory(galaxy) # TODO: Doesn't compile with cmake - qmake works
add_subdirectory(itemmodel)
add_subdirectory(itemmodeltest)
add_subdirectory(minimalbars)
add_subdirectory(minimalscatter)
add_subdirectory(minimalsurface)
add_subdirectory(multigraphs)
add_subdirectory(rotations)
add_subdirectory(scattertest)
add_subdirectory(surfacetest)
add_subdirectory(volumetrictest)
if(QT_FEATURE_graphs_3d)
if(TARGET Qt::Quick)
add_subdirectory(qmlbarsrowcolors)
add_subdirectory(qmlcustominput)
add_subdirectory(qmldynamicdata)
add_subdirectory(qmlgradient)
add_subdirectory(qmlheightmap)
add_subdirectory(qmllegend)
add_subdirectory(qmlmultitest)
add_subdirectory(qmlperf)
add_subdirectory(qmlsurfacelayers)
add_subdirectory(qmltheme)
add_subdirectory(qmlvolume)
endif()
if(NOT ANDROID AND NOT IOS AND NOT WINRT)
add_subdirectory(barstest)
add_subdirectory(custominput)
add_subdirectory(directional)
#add_subdirectory(galaxy) # TODO: Doesn't compile with cmake - qmake works
add_subdirectory(itemmodel)
add_subdirectory(itemmodeltest)
add_subdirectory(minimalbars)
add_subdirectory(minimalscatter)
add_subdirectory(minimalsurface)
add_subdirectory(multigraphs)
add_subdirectory(rotations)
add_subdirectory(scattertest)
add_subdirectory(surfacetest)
add_subdirectory(volumetrictest)
endif()
endif()