Qt-compatibility problem
Building BornAgain with latest Qt version 6.10.1 (Debian 13, gcc 14.2.0) leads to the following error: ``` bornagain/Img3D/Geo/PlottableBody.cpp:24:53: error: return type ‘class QQuaternion’ is incomplete 24 | QQuaternion EulerToQuaternion(const Img3D::F3& euler) | ^ bornagain/Img3D/Geo/PlottableBody.cpp: In function ‘void {anonymous}::EulerToQuaternion(const Img3D::F3&)’: bornagain/Img3D/Geo/PlottableBody.cpp:36:34: error: too many initializers for ‘QQuaternion’ 36 | return QQuaternion{a, b, c, d}; | ^ [ 11%] Linking CXX shared library ../../../../../lib/libgtest_main.so [ 11%] Built target gtest_main [ 11%] Building CXX object Img3D/CMakeFiles/BornAgainImg3D.dir/Mesh/Plane.cpp.o bornagain/Img3D/Geo/PlottableBody.cpp: In function ‘Img3D::F3 {anonymous}::QuaternionToEuler(const QQuaternion&)’: bornagain/Img3D/Geo/PlottableBody.cpp:41:17: error: invalid use of incomplete type ‘const class QQuaternion’ 41 | auto qvec = q.toVector4D(); | ^ In file included from qt6/6.10.1/gcc_64/include/QtGui/qgenericmatrix.h:8, from qt6/6.10.1/gcc_64/include/QtGui/qmatrix4x4.h:10, from qt6/6.10.1/gcc_64/include/QtGui/QMatrix4x4:1, from bornagain/Img3D/Geo/PlottableBody.h:22, from bornagain/Img3D/Geo/PlottableBody.cpp:15: qt6/6.10.1/gcc_64/include/QtCore/qmetatype.h:1550:1: note: forward declaration of ‘class QQuaternion’ 1550 | QT_FOR_EACH_STATIC_GUI_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ bornagain/Img3D/Geo/PlottableBody.cpp: In member function ‘void Img3D::PlottableBody::transform(Img3D::F3, Img3D::F3, Img3D::F3)’: bornagain/Img3D/Geo/PlottableBody.cpp:93:38: error: invalid use of void expression 93 | m_matrix.rotate(EulerToQuaternion(rotate)); | ~~~~~~~~~~~~~~~~~^~~~~~~~ bornagain/Img3D/Geo/PlottableBody.cpp: In member function ‘void Img3D::PlottableBody::transform(Img3D::F3, Img3D::F3, Img3D::F3, Img3D::F3)’: bornagain/Img3D/Geo/PlottableBody.cpp:105:38: error: invalid use of void expression 105 | m_matrix.rotate(EulerToQuaternion(rotate)); | ~~~~~~~~~~~~~~~~~^~~~~~~~ bornagain/Img3D/Geo/PlottableBody.cpp:107:38: error: invalid use of void expression 107 | m_matrix.rotate(EulerToQuaternion(turn)); | ~~~~~~~~~~~~~~~~~^~~~~~ bornagain/Img3D/Geo/PlottableBody.cpp: In member function ‘void Img3D::PlottableBody::addExtrinsicRotation(Img3D::F3, Img3D::F3, Img3D::F3&, Img3D::F3, Img3D::F3&)’: bornagain/Img3D/Geo/PlottableBody.cpp:116:38: error: invalid use of void expression 116 | m_matrix.rotate(EulerToQuaternion(rotateExtrinsic)); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ bornagain/Img3D/Geo/PlottableBody.cpp:118:38: error: invalid use of void expression 118 | m_matrix.rotate(EulerToQuaternion(rotate)); | ~~~~~~~~~~~~~~~~~^~~~~~~~ bornagain/Img3D/Geo/PlottableBody.cpp:120:38: error: invalid use of void expression 120 | m_matrix.rotate(EulerToQuaternion(turn)); | ~~~~~~~~~~~~~~~~~^~~~~~ bornagain/Img3D/Geo/PlottableBody.cpp:123:17: error: variable ‘QQuaternion q’ has initializer but incomplete type 123 | QQuaternion q = EulerToQuaternion(rotateExtrinsic) * EulerToQuaternion(rotate); | ^ bornagain/Img3D/Geo/PlottableBody.cpp:123:56: error: invalid operands of types ‘void’ and ‘void’ to binary ‘operator*’ 123 | QQuaternion q = EulerToQuaternion(rotateExtrinsic) * EulerToQuaternion(rotate); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | void void bornagain/Img3D/Geo/PlottableBody.cpp:127:34: error: invalid use of ‘void’ 127 | translate = EulerToQuaternion(rotateExtrinsic).rotatedVector(translate); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ ``` The CMake configuration stage is successful.
issue