From eca3847210f2f1dec01af38f76e4e3034cc99d76 Mon Sep 17 00:00:00 2001 From: Michel Zou Date: Wed, 30 Jun 2021 11:49:08 +0200 Subject: [PATCH] CMake build system --- CMakeLists.txt | 32 +++ classincludes/CMakeLists.txt | 170 ++++++++++++++ examples/CMakeLists.txt | 26 +++ examples/animation/CMakeLists.txt | 2 + examples/barchart/CMakeLists.txt | 1 + examples/bode/CMakeLists.txt | 2 + examples/controls/CMakeLists.txt | 1 + examples/cpuplot/CMakeLists.txt | 1 + examples/curvedemo/CMakeLists.txt | 1 + examples/dials/CMakeLists.txt | 1 + examples/oscilloscope/CMakeLists.txt | 2 + examples/simpleplot/CMakeLists.txt | 1 + examples/sinusplot/CMakeLists.txt | 1 + examples/spectrogram/CMakeLists.txt | 1 + src/CMakeLists.txt | 328 +++++++++++++++++++++++++++ 15 files changed, 570 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 classincludes/CMakeLists.txt create mode 100644 examples/CMakeLists.txt create mode 100644 examples/animation/CMakeLists.txt create mode 100644 examples/barchart/CMakeLists.txt create mode 100644 examples/bode/CMakeLists.txt create mode 100644 examples/controls/CMakeLists.txt create mode 100644 examples/cpuplot/CMakeLists.txt create mode 100644 examples/curvedemo/CMakeLists.txt create mode 100644 examples/dials/CMakeLists.txt create mode 100644 examples/oscilloscope/CMakeLists.txt create mode 100644 examples/simpleplot/CMakeLists.txt create mode 100644 examples/sinusplot/CMakeLists.txt create mode 100644 examples/spectrogram/CMakeLists.txt create mode 100644 src/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b15f952 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,32 @@ +cmake_minimum_required (VERSION 3.1) +project (qwt VERSION 6.2.0 LANGUAGES CXX) + +option (WITH_PLOT "Whether to build plot" ON) +option (WITH_SVG "Whether to build svg" ON) +option (WITH_OPENGL "Whether to build opengl" ON) +option (WITH_POLAR "Whether to build polar" ON) +option (WITH_WIDGETS "Whether to build widgets" ON) + +option (WITH_EXAMPLES "Whether to include examples" OFF) + +option (BUILD_SHARED_LIBS "Build shared/static libs" ON) +option (USE_QT6 "qt 6.x" OFF) + +include (GNUInstallDirs) + +set (QWT_VER_MAJ 6) +set (QWT_VER_MIN 2) +set (QWT_VER_PAT 0) +set (QWT_VERSION ${QWT_VER_MAJ}.${QWT_VER_MIN}.${QWT_VER_PAT}) + +if (USE_QT6) + find_package (Qt6 COMPONENTS Concurrent OpenGL OpenGLWidgets PrintSupport Svg Widgets REQUIRED CONFIG) +else () + find_package (Qt5 COMPONENTS Concurrent OpenGL PrintSupport Svg Widgets REQUIRED CONFIG) +endif () + +add_subdirectory (src) + +if (WITH_EXAMPLES) + add_subdirectory(examples) +endif() diff --git a/classincludes/CMakeLists.txt b/classincludes/CMakeLists.txt new file mode 100644 index 0000000..978a255 --- /dev/null +++ b/classincludes/CMakeLists.txt @@ -0,0 +1,170 @@ +set (class_headers + QwtAbstractScaleDraw + QwtAlphaColorMap + QwtAxis + QwtAxisId + QwtBezier + QwtClipper + QwtColorMap + QwtColumnRect + QwtColumnSymbol + QwtDate + QwtDateScaleDraw + QwtDateScaleEngine + QwtDynGridLayout + QwtGlobal + QwtGraphic + QwtHueColorMap + QwtInterval + QwtIntervalSymbol + QwtLinearColorMap + QwtLinearScaleEngine + QwtLogScaleEngine + QwtLogTransform + QwtMagnifier + QwtMath + QwtNullPaintDevice + QwtNullTransform + QwtPainter + QwtPainterCommand + QwtPanner + QwtPicker + QwtPickerClickPointMachine + QwtPickerClickRectMachine + QwtPickerDragLineMachine + QwtPickerDragPointMachine + QwtPickerDragRectMachine + QwtPickerMachine + QwtPickerPolygonMachine + QwtPickerTrackerMachine + QwtPixelMatrix + QwtPlainTextEngine + QwtPoint3D + QwtPointPolar + QwtPowerTransform + QwtRichTextEngine + QwtRoundScaleDraw + QwtSaturationValueColorMap + QwtScaleArithmetic + QwtScaleDiv + QwtScaleDraw + QwtScaleEngine + QwtScaleMap + QwtSimpleCompassRose + QwtSplineBasis + QwtSpline + QwtSplineC1 + QwtSplineC2 + QwtSplineCubic + QwtSplineG1 + QwtSplineInterpolating + QwtSplineLocal + QwtSplineParameter + QwtSplineParametrization + QwtSplinePleasing + QwtSplinePolynomial + QwtSymbol + QwtSystemClock + QwtText + QwtTextEngine + QwtTextLabel + QwtTransform + QwtWidgetOverlay) + +if (WITH_PLOT) + list (APPEND class_headers + QwtAbstractLegend + QwtCurveFitter + QwtEventPattern + QwtIntervalSample + QwtLegend + QwtLegendData + QwtLegendLabel + QwtPointMapper + QwtMatrixRasterData + QwtOHLCSample + QwtPlot + QwtPlotAbstractBarChart + QwtPlotAbstractCanvas + QwtPlotBarChart + QwtPlotCanvas + QwtPlotCurve + QwtPlotDict + QwtPlotDirectPainter + QwtPlotGraphicItem + QwtPlotGrid + QwtPlotHistogram + QwtPlotIntervalCurve + QwtPlotItem + QwtPlotLayout + QwtPlotLegendItem + QwtPlotMagnifier + QwtPlotMarker + QwtPlotMultiBarChart + QwtPlotPanner + QwtPlotPicker + QwtPlotRasterItem + QwtPlotRenderer + QwtPlotRescaler + QwtPlotScaleItem + QwtPlotSeriesItem + QwtPlotShapeItem + QwtPlotSpectroCurve + QwtPlotSpectrogram + QwtPlotTextLabel + QwtPlotTradingCurve + QwtPlotVectorField + QwtPlotZoneItem + QwtPlotZoomer + QwtScaleWidget + QwtRasterData + QwtSeriesData + QwtSetSample + QwtSamplingThread + QwtSplineCurveFitter + QwtWeedingCurveFitter + QwtIntervalSeriesData + QwtPoint3DSeriesData + QwtPointSeriesData + QwtSetSeriesData + QwtSyntheticPointData + QwtPointArrayData + QwtTradingChartData + QwtVectorFieldSymbol + QwtVectorFieldArrow + QwtVectorFieldThinArrow + QwtVectorFieldData + QwtVectorFieldSample + QwtCPointerData) +endif () + +if (WITH_OPENGL) + list (APPEND class_headers QwtPlotOpenGLCanvas) +endif () + +if (WITH_WIDGETS) + list (APPEND class_headers + QwtAbstractSlider + QwtAbstractScale + QwtArrowButton + QwtAnalogClock + QwtCompass + QwtCompassMagnetNeedle + QwtCompassRose + QwtCompassScaleDraw + QwtCompassWindArrow + QwtCounter + QwtDial + QwtDialNeedle + QwtDialSimpleNeedle + QwtKnob + QwtSlider + QwtThermo + QwtWheel) +endif () + +if (WITH_SVG) + list (APPEND class_headers QwtPlotSvgItem) +endif () + +install (FILES ${class_headers} DESTINATION include) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt new file mode 100644 index 0000000..3559725 --- /dev/null +++ b/examples/CMakeLists.txt @@ -0,0 +1,26 @@ + + +macro (qwt_add_example name) + add_executable(qwt_example_${name} ${ARGN}) + target_link_libraries (qwt_example_${name} PRIVATE qwt) + target_include_directories (qwt_example_${name} PRIVATE ${PROJECT_SOURCE_DIR}/classincludes) + set_target_properties(qwt_example_${name} PROPERTIES AUTOMOC ON) + if (USE_QT6) + target_link_libraries (qwt_example_${name} PRIVATE Qt6::PrintSupport) + else () + target_link_libraries (qwt_example_${name} PRIVATE Qt5::PrintSupport) + endif () +endmacro () + +add_subdirectory(animation) +add_subdirectory(barchart) +add_subdirectory(bode) +add_subdirectory(controls) +add_subdirectory(cpuplot) +add_subdirectory(curvedemo) +add_subdirectory(dials) +add_subdirectory(oscilloscope) +add_subdirectory(simpleplot) +add_subdirectory(sinusplot) +add_subdirectory(spectrogram) + diff --git a/examples/animation/CMakeLists.txt b/examples/animation/CMakeLists.txt new file mode 100644 index 0000000..87d82a2 --- /dev/null +++ b/examples/animation/CMakeLists.txt @@ -0,0 +1,2 @@ + +qwt_add_example(animation main.cpp Plot.cpp Plot.h) diff --git a/examples/barchart/CMakeLists.txt b/examples/barchart/CMakeLists.txt new file mode 100644 index 0000000..fc0db2a --- /dev/null +++ b/examples/barchart/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(barchart main.cpp BarChart.cpp BarChart.h) diff --git a/examples/bode/CMakeLists.txt b/examples/bode/CMakeLists.txt new file mode 100644 index 0000000..cf6262a --- /dev/null +++ b/examples/bode/CMakeLists.txt @@ -0,0 +1,2 @@ +qwt_add_example(bode main.cpp Plot.cpp Plot.h MainWindow.cpp MainWindow.h) + diff --git a/examples/controls/CMakeLists.txt b/examples/controls/CMakeLists.txt new file mode 100644 index 0000000..a2f5ea9 --- /dev/null +++ b/examples/controls/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(controls DialBox.cpp DialTab.cpp KnobBox.cpp KnobTab.cpp main.cpp SliderBox.h SliderTab.h WheelBox.h WheelTab.h DialBox.h DialTab.h KnobBox.h KnobTab.h SliderBox.cpp SliderTab.cpp WheelBox.cpp WheelTab.cpp) diff --git a/examples/cpuplot/CMakeLists.txt b/examples/cpuplot/CMakeLists.txt new file mode 100644 index 0000000..f9ee82e --- /dev/null +++ b/examples/cpuplot/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(cpucplot CpuPieMarker.cpp CpuPieMarker.h CpuPlot.cpp CpuPlot.h CpuStat.cpp CpuStat.h main.cpp) diff --git a/examples/curvedemo/CMakeLists.txt b/examples/curvedemo/CMakeLists.txt new file mode 100644 index 0000000..3088e67 --- /dev/null +++ b/examples/curvedemo/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(curvedemo main.cpp) diff --git a/examples/dials/CMakeLists.txt b/examples/dials/CMakeLists.txt new file mode 100644 index 0000000..79362b5 --- /dev/null +++ b/examples/dials/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(dials AttitudeIndicator.cpp AttitudeIndicator.h CMakeLists.txt CockpitGrid.cpp CockpitGrid.h CompassGrid.cpp CompassGrid.h dials.pro main.cpp SpeedoMeter.cpp SpeedoMeter.h) diff --git a/examples/oscilloscope/CMakeLists.txt b/examples/oscilloscope/CMakeLists.txt new file mode 100644 index 0000000..e3104a3 --- /dev/null +++ b/examples/oscilloscope/CMakeLists.txt @@ -0,0 +1,2 @@ + +qwt_add_example(oscilloscope Knob.cpp Knob.h main.cpp MainWindow.cpp MainWindow.h Plot.cpp Plot.h SamplingThread.cpp SamplingThread.h SignalData.cpp SignalData.h WheelBox.cpp WheelBox.h) diff --git a/examples/simpleplot/CMakeLists.txt b/examples/simpleplot/CMakeLists.txt new file mode 100644 index 0000000..beb1eb7 --- /dev/null +++ b/examples/simpleplot/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(simpleplot main.cpp) diff --git a/examples/sinusplot/CMakeLists.txt b/examples/sinusplot/CMakeLists.txt new file mode 100644 index 0000000..0b9ce72 --- /dev/null +++ b/examples/sinusplot/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(sinusplot main.cpp) diff --git a/examples/spectrogram/CMakeLists.txt b/examples/spectrogram/CMakeLists.txt new file mode 100644 index 0000000..582bc75 --- /dev/null +++ b/examples/spectrogram/CMakeLists.txt @@ -0,0 +1 @@ +qwt_add_example(spectrogram Plot.cpp Plot.h main.cpp) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..85d0bb3 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,328 @@ + +set (qwt_headers + qwt.h + qwt_abstract_scale_draw.h + qwt_bezier.h + qwt_clipper.h + qwt_color_map.h + qwt_column_symbol.h + qwt_date.h + qwt_date_scale_draw.h + qwt_date_scale_engine.h + qwt_dyngrid_layout.h + qwt_global.h + qwt_graphic.h + qwt_interval.h + qwt_interval_symbol.h + qwt_math.h + qwt_magnifier.h + qwt_null_paintdevice.h + qwt_painter.h + qwt_painter_command.h + qwt_panner.h + qwt_picker.h + qwt_picker_machine.h + qwt_pixel_matrix.h + qwt_point_3d.h + qwt_point_polar.h + qwt_round_scale_draw.h + qwt_scale_div.h + qwt_scale_draw.h + qwt_scale_engine.h + qwt_scale_map.h + qwt_spline.h + qwt_spline_basis.h + qwt_spline_parametrization.h + qwt_spline_local.h + qwt_spline_cubic.h + qwt_spline_pleasing.h + qwt_spline_polynomial.h + qwt_symbol.h + qwt_system_clock.h + qwt_text_engine.h + qwt_text_label.h + qwt_text.h + qwt_transform.h + qwt_widget_overlay.h +) + +set(qwt_sources + qwt.cpp + qwt_abstract_scale_draw.cpp + qwt_bezier.cpp + qwt_clipper.cpp + qwt_color_map.cpp + qwt_column_symbol.cpp + qwt_date.cpp + qwt_date_scale_draw.cpp + qwt_date_scale_engine.cpp + qwt_dyngrid_layout.cpp + qwt_event_pattern.cpp + qwt_graphic.cpp + qwt_interval.cpp + qwt_interval_symbol.cpp + qwt_math.cpp + qwt_magnifier.cpp + qwt_null_paintdevice.cpp + qwt_painter.cpp + qwt_painter_command.cpp + qwt_panner.cpp + qwt_picker.cpp + qwt_picker_machine.cpp + qwt_pixel_matrix.cpp + qwt_point_3d.cpp + qwt_point_polar.cpp + qwt_round_scale_draw.cpp + qwt_scale_div.cpp + qwt_scale_draw.cpp + qwt_scale_map.cpp + qwt_scale_engine.cpp + qwt_spline.cpp + qwt_spline_basis.cpp + qwt_spline_parametrization.cpp + qwt_spline_local.cpp + qwt_spline_cubic.cpp + qwt_spline_pleasing.cpp + qwt_spline_polynomial.cpp + qwt_symbol.cpp + qwt_system_clock.cpp + qwt_text_engine.cpp + qwt_text_label.cpp + qwt_text.cpp + qwt_transform.cpp + qwt_widget_overlay.cpp +) + +if (WITH_PLOT) + list (APPEND qwt_headers + qwt_axis.h + qwt_axis_id.h + qwt_curve_fitter.h + qwt_spline_curve_fitter.h + qwt_weeding_curve_fitter.h + qwt_event_pattern.h + qwt_abstract_legend.h + qwt_legend.h + qwt_legend_data.h + qwt_legend_label.h + qwt_plot.h + qwt_plot_renderer.h + qwt_plot_curve.h + qwt_plot_dict.h + qwt_plot_directpainter.h + qwt_plot_graphicitem.h + qwt_plot_grid.h + qwt_plot_histogram.h + qwt_plot_item.h + qwt_plot_abstract_barchart.h + qwt_plot_barchart.h + qwt_plot_multi_barchart.h + qwt_plot_intervalcurve.h + qwt_plot_tradingcurve.h + qwt_plot_layout.h + qwt_plot_marker.h + qwt_plot_zoneitem.h + qwt_plot_textlabel.h + qwt_plot_rasteritem.h + qwt_plot_spectrogram.h + qwt_plot_spectrocurve.h + qwt_plot_scaleitem.h + qwt_plot_legenditem.h + qwt_plot_seriesitem.h + qwt_plot_shapeitem.h + qwt_plot_vectorfield.h + qwt_plot_abstract_canvas.h + qwt_plot_canvas.h + qwt_plot_panner.h + qwt_plot_picker.h + qwt_plot_zoomer.h + qwt_plot_magnifier.h + qwt_plot_rescaler.h + qwt_point_mapper.h + qwt_raster_data.h + qwt_matrix_raster_data.h + qwt_vectorfield_symbol.h + qwt_sampling_thread.h + qwt_samples.h + qwt_series_data.h + qwt_series_store.h + qwt_point_data.h + qwt_scale_widget.h) + + list (APPEND qwt_sources + qwt_curve_fitter.cpp + qwt_spline_curve_fitter.cpp + qwt_weeding_curve_fitter.cpp + qwt_abstract_legend.cpp + qwt_legend.cpp + qwt_legend_data.cpp + qwt_legend_label.cpp + qwt_plot.cpp + qwt_plot_renderer.cpp + qwt_plot_axis.cpp + qwt_plot_curve.cpp + qwt_plot_dict.cpp + qwt_plot_directpainter.cpp + qwt_plot_graphicitem.cpp + qwt_plot_grid.cpp + qwt_plot_histogram.cpp + qwt_plot_item.cpp + qwt_plot_abstract_barchart.cpp + qwt_plot_barchart.cpp + qwt_plot_multi_barchart.cpp + qwt_plot_intervalcurve.cpp + qwt_plot_zoneitem.cpp + qwt_plot_tradingcurve.cpp + qwt_plot_spectrogram.cpp + qwt_plot_spectrocurve.cpp + qwt_plot_scaleitem.cpp + qwt_plot_legenditem.cpp + qwt_plot_seriesitem.cpp + qwt_plot_shapeitem.cpp + qwt_plot_vectorfield.cpp + qwt_plot_marker.cpp + qwt_plot_textlabel.cpp + qwt_plot_layout.cpp + qwt_plot_abstract_canvas.cpp + qwt_plot_canvas.cpp + qwt_plot_panner.cpp + qwt_plot_rasteritem.cpp + qwt_plot_picker.cpp + qwt_plot_zoomer.cpp + qwt_plot_magnifier.cpp + qwt_plot_rescaler.cpp + qwt_point_mapper.cpp + qwt_raster_data.cpp + qwt_matrix_raster_data.cpp + qwt_vectorfield_symbol.cpp + qwt_sampling_thread.cpp + qwt_series_data.cpp + qwt_point_data.cpp + qwt_scale_widget.cpp) +endif () + +if (WITH_OPENGL) + list (APPEND qwt_headers qwt_plot_opengl_canvas.h) + list (APPEND qwt_sources qwt_plot_opengl_canvas.cpp) + if (NOT USE_QT6) + list (APPEND qwt_headers qwt_plot_glcanvas.h) + list (APPEND qwt_sources qwt_plot_glcanvas.cpp) + endif () +endif () + +if (WITH_SVG) + list (APPEND qwt_headers qwt_plot_svgitem.h) + list (APPEND qwt_sources qwt_plot_svgitem.cpp) +endif () + +if (WITH_POLAR) + list (APPEND qwt_headers + qwt_polar.h + qwt_polar_canvas.h + qwt_polar_curve.h + qwt_polar_fitter.h + qwt_polar_grid.h + qwt_polar_itemdict.h + qwt_polar_item.h + qwt_polar_layout.h + qwt_polar_magnifier.h + qwt_polar_marker.h + qwt_polar_panner.h + qwt_polar_picker.h + qwt_polar_plot.h + qwt_polar_renderer.h + qwt_polar_spectrogram.h) + list (APPEND qwt_sources + qwt_polar_canvas.cpp + qwt_polar_curve.cpp + qwt_polar_fitter.cpp + qwt_polar_grid.cpp + qwt_polar_item.cpp + qwt_polar_itemdict.cpp + qwt_polar_layout.cpp + qwt_polar_magnifier.cpp + qwt_polar_marker.cpp + qwt_polar_panner.cpp + qwt_polar_picker.cpp + qwt_polar_plot.cpp + qwt_polar_renderer.cpp + qwt_polar_spectrogram.cpp) +endif () + +if (WITH_WIDGETS) + list (APPEND qwt_headers + qwt_abstract_slider.h + qwt_abstract_scale.h + qwt_arrow_button.h + qwt_analog_clock.h + qwt_compass.h + qwt_compass_rose.h + qwt_counter.h + qwt_dial.h + qwt_dial_needle.h + qwt_knob.h + qwt_slider.h + qwt_thermo.h + qwt_wheel.h) + list (APPEND qwt_sources + qwt_abstract_slider.cpp + qwt_abstract_scale.cpp + qwt_arrow_button.cpp + qwt_analog_clock.cpp + qwt_compass.cpp + qwt_compass_rose.cpp + qwt_counter.cpp + qwt_dial.cpp + qwt_dial_needle.cpp + qwt_knob.cpp + qwt_slider.cpp + qwt_thermo.cpp + qwt_wheel.cpp) +endif () + +add_library (qwt ${qwt_headers} ${qwt_sources}) + +target_compile_definitions(qwt + PUBLIC + $<$:QWT_DLL> + PRIVATE + $<$:QWT_MAKEDLL> +) + +target_include_directories(qwt + PUBLIC + $ + $) + +if (USE_QT6) + target_link_libraries(qwt + PUBLIC + Qt6::Core + Qt6::OpenGL + Qt6::OpenGLWidgets + PRIVATE + Qt6::Concurrent + Qt6::PrintSupport + Qt6::Svg) +else () + target_link_libraries(qwt + PUBLIC + Qt5::Core + Qt5::OpenGL + PRIVATE + Qt5::Concurrent + Qt5::PrintSupport + Qt5::Svg) +endif () + +set_target_properties(qwt PROPERTIES + VERSION ${QWT_VERSION} + SOVERSION ${QWT_VER_MAJ} + AUTOMOC ON) +target_compile_definitions(qwt PRIVATE QWT_MOC_INCLUDE) + +install (FILES ${qwt_headers} DESTINATION include/qwt) +install (TARGETS qwt + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})