jahnf / Projecteur

Linux Desktop Application for the Logitech Spotlight device (and similar devices) - Digital Laser Pointer
MIT License
374 stars 33 forks source link

[BUG] Compilation fails with GCC-12 #181

Closed ConiKost closed 2 years ago

ConiKost commented 2 years ago

Description Compiling will fail with GCC-12.

[4/32] /usr/bin/x86_64-pc-linux-gnu-g++ -DCXX_COMPILER_ID=GNU -DCXX_COMPILER_VERSION=12.0.1 -DHAS_Qt5_DBus=1 -DHAS_Qt5_X11Extras=1 -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/include -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/version/projecteur -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQmlModels -isystem /usr/include/qt5/QtQml -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/qt5/QtDBus  -pipe -march=native -fno-diagnostics-color -O2 -Wall -Wextra -fPIC -std=gnu++14 -MD -MT CMakeFiles/projecteur.dir/src/main.cc.o -MF CMakeFiles/projecteur.dir/src/main.cc.o.d -o CMakeFiles/projecteur.dir/src/main.cc.o -c /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/main.cc
FAILED: CMakeFiles/projecteur.dir/src/main.cc.o 
/usr/bin/x86_64-pc-linux-gnu-g++ -DCXX_COMPILER_ID=GNU -DCXX_COMPILER_VERSION=12.0.1 -DHAS_Qt5_DBus=1 -DHAS_Qt5_X11Extras=1 -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/include -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/version/projecteur -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQmlModels -isystem /usr/include/qt5/QtQml -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/qt5/QtDBus  -pipe -march=native -fno-diagnostics-color -O2 -Wall -Wextra -fPIC -std=gnu++14 -MD -MT CMakeFiles/projecteur.dir/src/main.cc.o -MF CMakeFiles/projecteur.dir/src/main.cc.o.d -o CMakeFiles/projecteur.dir/src/main.cc.o -c /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/main.cc
In file included from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/devicescan.h:4,
                 from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/spotlight.h:10,
                 from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/projecteurapp.h:3,
                 from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/main.cc:2:
/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/device.h: In instantiation of ‘struct InputBuffer<12>’:
/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/device.h:175:19:   required from here
/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/device.h:116:23: error: ‘InputBuffer<Size, T>::data_’ has incomplete type
  116 |   std::array<T, Size> data_;
      |                       ^~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/12.0.1/include/g++-v12/functional:54,
                 from /usr/include/qt5/QtCore/qhashfunctions.h:48,
                 from /usr/include/qt5/QtCore/qlist.h:47,
                 from /usr/include/qt5/QtCore/qobject.h:49,
                 from /usr/include/qt5/QtCore/QObject:1,
                 from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/spotlight.h:4:
/usr/lib/gcc/x86_64-pc-linux-gnu/12.0.1/include/g++-v12/tuple:1595:45: note: declaration of ‘struct std::array<input_event, 12>’
 1595 |   template<typename _Tp, size_t _Nm> struct array;
      |                                             ^~~~~
[5/32] /usr/bin/x86_64-pc-linux-gnu-g++ -DCXX_COMPILER_ID=GNU -DCXX_COMPILER_VERSION=12.0.1 -DHAS_Qt5_DBus=1 -DHAS_Qt5_X11Extras=1 -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/include -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/version/projecteur -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQmlModels -isystem /usr/include/qt5/QtQml -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/qt5/QtDBus  -pipe -march=native -fno-diagnostics-color -O2 -Wall -Wextra -fPIC -std=gnu++14 -MD -MT CMakeFiles/projecteur.dir/projecteur_autogen/mocs_compilation.cpp.o -MF CMakeFiles/projecteur.dir/projecteur_autogen/mocs_compilation.cpp.o.d -o CMakeFiles/projecteur.dir/projecteur_autogen/mocs_compilation.cpp.o -c /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/mocs_compilation.cpp
FAILED: CMakeFiles/projecteur.dir/projecteur_autogen/mocs_compilation.cpp.o 
/usr/bin/x86_64-pc-linux-gnu-g++ -DCXX_COMPILER_ID=GNU -DCXX_COMPILER_VERSION=12.0.1 -DHAS_Qt5_DBus=1 -DHAS_Qt5_X11Extras=1 -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/include -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/version/projecteur -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQmlModels -isystem /usr/include/qt5/QtQml -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/qt5/QtDBus  -pipe -march=native -fno-diagnostics-color -O2 -Wall -Wextra -fPIC -std=gnu++14 -MD -MT CMakeFiles/projecteur.dir/projecteur_autogen/mocs_compilation.cpp.o -MF CMakeFiles/projecteur.dir/projecteur_autogen/mocs_compilation.cpp.o.d -o CMakeFiles/projecteur.dir/projecteur_autogen/mocs_compilation.cpp.o -c /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/mocs_compilation.cpp
In file included from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/UVLADIE3JM/moc_device.cpp:10,
                 from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/mocs_compilation.cpp:6:
/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/UVLADIE3JM/../../../Projecteur-0.9.2/src/device.h: In instantiation of ‘struct InputBuffer<12>’:
/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/UVLADIE3JM/../../../Projecteur-0.9.2/src/device.h:175:19:   required from here
/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/UVLADIE3JM/../../../Projecteur-0.9.2/src/device.h:116:23: error: ‘InputBuffer<Size, T>::data_’ has incomplete type
  116 |   std::array<T, Size> data_;
      |                       ^~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/12.0.1/include/g++-v12/bits/unique_ptr.h:36,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/12.0.1/include/g++-v12/memory:76,
                 from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/UVLADIE3JM/moc_aboutdlg.cpp:9,
                 from /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/mocs_compilation.cpp:2:
/usr/lib/gcc/x86_64-pc-linux-gnu/12.0.1/include/g++-v12/tuple:1595:45: note: declaration of ‘struct std::array<input_event, 12>’
 1595 |   template<typename _Tp, size_t _Nm> struct array;
      |                                             ^~~~~
[6/32] /usr/bin/x86_64-pc-linux-gnu-g++ -DCXX_COMPILER_ID=GNU -DCXX_COMPILER_VERSION=12.0.1 -DHAS_Qt5_DBus=1 -DHAS_Qt5_X11Extras=1 -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/include -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/version/projecteur -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQmlModels -isystem /usr/include/qt5/QtQml -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/qt5/QtDBus  -pipe -march=native -fno-diagnostics-color -O2 -Wall -Wextra -fPIC -std=gnu++14 -MD -MT CMakeFiles/projecteur.dir/src/actiondelegate.cc.o -MF CMakeFiles/projecteur.dir/src/actiondelegate.cc.o.d -o CMakeFiles/projecteur.dir/src/actiondelegate.cc.o -c /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/actiondelegate.cc
[7/32] /usr/bin/x86_64-pc-linux-gnu-g++ -DCXX_COMPILER_ID=GNU -DCXX_COMPILER_VERSION=12.0.1 -DHAS_Qt5_DBus=1 -DHAS_Qt5_X11Extras=1 -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DQT_X11EXTRAS_LIB -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/projecteur_autogen/include -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src -I/var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2_build/version/projecteur -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtCore -isystem /usr/lib64/qt5/mkspecs/linux-g++ -isystem /usr/include/qt5/QtQuick -isystem /usr/include/qt5/QtQmlModels -isystem /usr/include/qt5/QtQml -isystem /usr/include/qt5/QtNetwork -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtX11Extras -isystem /usr/include/qt5/QtDBus  -pipe -march=native -fno-diagnostics-color -O2 -Wall -Wextra -fPIC -std=gnu++14 -MD -MT CMakeFiles/projecteur.dir/src/aboutdlg.cc.o -MF CMakeFiles/projecteur.dir/src/aboutdlg.cc.o.d -o CMakeFiles/projecteur.dir/src/aboutdlg.cc.o -c /var/tmp/portage/x11-misc/projecteur-0.9.2/work/Projecteur-0.9.2/src/aboutdlg.cc
ninja: build stopped: subcommand failed.

To Reproduce

Expected behavior

Desktop/Linux Environment (please complete the following information):

jahnf commented 2 years ago

Thanks for the report @ConiKost - yes there seems to be a missing include <array> (but which worked without it surprisingly worked in earlier versions of gcc)

jahnf commented 2 years ago

I cannot test it right now with gcc-12. So I hope it is fixed with the small change on https://github.com/jahnf/Projecteur/tree/fix/missing-includes

If you could verify it, I will merge that branch back.

Edit: I guess for the released versions a new patch will be needed. I'll see that a 0.9.3 is created that works with newer gcc and clang versions.

ConiKost commented 2 years ago

Thank you! I can confirm, your patch fixes it. Compilation with GCC-12 works now.