QCustomPlot Discussion and Comments

Qt 6.5.1supportReturn to overview

I can’t compile the project with QCustomPlot v2.1.1 in qt6.5.1, but in qt5.15.10 everything works fine.
Here is the cmake output:

[build] [7/40  15% :: 4.769] Building CXX object qcustomplot/CMakeFiles/qcustomplot.dir/moc_qcustomplot.cpp.obj
[build] FAILED: qcustomplot/CMakeFiles/qcustomplot.dir/moc_qcustomplot.cpp.obj 
[build] C:\ProgramTools\mingw11.2.0-x64\bin\c++.exe -DMINGW_HAS_SECURE_API=1 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -ID:/Work/OpenCV/auto-thermo-correction/qcustomplot/. -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtCore -isystem C:/ProgramTools/qt/qt6current-mingw/include -isystem C:/ProgramTools/qt/qt6current-mingw/mkspecs/win32-g++ -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtGui -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtPrintSupport -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtWidgets -g -Wall -Wextra -pedantic -MD -MT qcustomplot/CMakeFiles/qcustomplot.dir/moc_qcustomplot.cpp.obj -MF qcustomplot\CMakeFiles\qcustomplot.dir\moc_qcustomplot.cpp.obj.d -o qcustomplot/CMakeFiles/qcustomplot.dir/moc_qcustomplot.cpp.obj -c D:/Work/OpenCV/auto-thermo-correction/build/qcustomplot/moc_qcustomplot.cpp
[build] D:/Work/OpenCV/auto-thermo-correction/build/qcustomplot/moc_qcustomplot.cpp:438:60: error: template argument 1 is invalid
[build]   438 |         QtPrivate::TypeAndForceComplete<QCP, std::true_type>
[build]       |                                                            ^
[build] D:/Work/OpenCV/auto-thermo-correction/build/qcustomplot/moc_qcustomplot.cpp:436:5: error: template argument 2 is invalid
[build]   436 |     qt_incomplete_metaTypeArray<qt_meta_stringdata_CLASSQCPENDCLASS_t,
[build]       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[build]   437 |         // Q_OBJECT / Q_GADGET
[build]       |         ~~~~~~~~~~~~~~~~~~~~~~
[build]   438 |         QtPrivate::TypeAndForceComplete<QCP, std::true_type>
[build]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[build]   439 |     >,
[build]       |     ~
[build] [7/40  17% :: 12.636] Building CXX object qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj
[build] FAILED: qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj 
[build] C:\ProgramTools\mingw11.2.0-x64\bin\c++.exe -DMINGW_HAS_SECURE_API=1 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -ID:/Work/OpenCV/auto-thermo-correction/qcustomplot/. -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtCore -isystem C:/ProgramTools/qt/qt6current-mingw/include -isystem C:/ProgramTools/qt/qt6current-mingw/mkspecs/win32-g++ -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtGui -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtPrintSupport -isystem C:/ProgramTools/qt/qt6current-mingw/include/QtWidgets -g -Wall -Wextra -pedantic -MD -MT qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj -MF qcustomplot\CMakeFiles\qcustomplot.dir\qcustomplot.cpp.obj.d -o qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj -c D:/Work/OpenCV/auto-thermo-correction/qcustomplot/qcustomplot.cpp
[build] C:/ProgramTools/mingw11.2.0-x64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/as.exe: qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj: too many sections (32946)
[build] C:\Users\s38449\AppData\Local\Temp\cc0Sfsue.s: Assembler messages:
[build] C:\Users\s38449\AppData\Local\Temp\cc0Sfsue.s: Fatal error: can't write 44 bytes to section .text of qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj: 'file too big'
[build] C:/ProgramTools/mingw11.2.0-x64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/as.exe: qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj: too many sections (32946)
[build] C:\Users\s38449\AppData\Local\Temp\cc0Sfsue.s: Fatal error: qcustomplot/CMakeFiles/qcustomplot.dir/qcustomplot.cpp.obj: file too big
[build] ninja: build stopped: subcommand failed.

Hi!

This seems to be the same issue of the linker, that using the amalgamated sources leads to a too big object file for it to handle, see here:
https://www.qcustomplot.com/index.php/support/forum/2653

The simplest solution is to either provide a compiler flag like -mbig-obj or using the non-amalgamated sources from the gitlab repo.