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