schrodinger / pymol-open-source

Open-source foundation of the user-sponsored PyMOL molecular visualization system.
https://pymol.org/
Other
1.15k stars 275 forks source link

Using experimental glm features causes build error in glm 1.0.0-1 #342

Closed CaglanT closed 6 months ago

CaglanT commented 7 months ago

Ever since glm 0.9.9.0 there is an option to enable experimental glm extensions such as quaternions, GLM_ENABLE_EXPERIMENTAL. When building pymol-open-source with system glm 1.0.0-1, I am getting the following error message:

In file included from /usr/include/glm/gtx/norm.hpp:20,
                 from /usr/include/glm/gtx/quaternion.hpp:21,
                 from /usr/include/glm/gtx/io.hpp:24,
                 from layer0/Bezier.cpp:5:
/usr/include/glm/gtx/component_wise.hpp:22:9: error: #error "GLM: GLM_GTX_component_wise is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
   22 | #       error "GLM: GLM_GTX_component_wise is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
      |         ^~~~~
/usr/include/glm/gtx/norm.hpp:23:9: error: #error "GLM: GLM_GTX_norm is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
   23 | #       error "GLM: GLM_GTX_norm is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
      |         ^~~~~
/usr/include/glm/gtx/quaternion.hpp:24:9: error: #error "GLM: GLM_GTX_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
   24 | #       error "GLM: GLM_GTX_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
      |         ^~~~~
/usr/include/glm/gtx/io.hpp:27:9: error: #error "GLM: GLM_GTX_io is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
   27 | #       error "GLM: GLM_GTX_io is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
      |         ^~~~~
In file included from /usr/include/glm/gtx/io.inl:7,
                 from /usr/include/glm/gtx/io.hpp:210:
/usr/include/glm/gtx/type_trait.hpp:16:9: error: #error "GLM: GLM_GTX_type_trait is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
   16 | #       error "GLM: GLM_GTX_type_trait is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
      |         ^~~~~
In file included from /usr/include/glm/gtx/type_trait.hpp:24:
/usr/include/glm/gtx/dual_quaternion.hpp:24:9: error: #error "GLM: GLM_GTX_dual_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
   24 | #       error "GLM: GLM_GTX_dual_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."

...

cc1plus: note: destination object is likely at address zero
error: command '/usr/bin/g++' failed with exit code 1
xyx2999 commented 6 months ago

If you use the experimental glm features, you can add "#define GLM_ENABLE_EXPERIMENTAL" before including the glm/gtx/... to avoid this error. Your code may like this:

define GLM_ENABLE_EXPERIMENTAL

include <glm/gtx/vector_angle.hpp>