10110111 / CalcMySky

Simulator of light scattering by planetary atmospheres
GNU General Public License v3.0
29 stars 7 forks source link

Define GLM_ENABLE_EXPERIMENTAL so we can build with GLM release 1.0.0 #18

Closed lainedfles closed 7 months ago

lainedfles commented 7 months ago

GLM 1.0.0 was released 5 days ago. This patch sets #define GLM_ENABLE_EXPERIMENTAL only where required to build without error. Seems to work as expected with Stellarium. Thanks for this software!

10110111 commented 7 months ago

What errors do you get without this definition? Is it really required in every file for each inclusion of the main GLM header?

lainedfles commented 7 months ago

@10110111 You're absolutely right, it's only required for #include <glm/gtx/transform.hpp>. Here's an example build error. Configure:

[user@hostname cmake_tmp]$ cmake -S ../CalcMySky/ -B build -G Ninja -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS="-fPIC" -DQT_VERSION=6 -Wno-dev
-- The CXX compiler identification is GNU 13.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for C++ include glm/glm.hpp
-- Looking for C++ include glm/glm.hpp - found
-- Checking that GLM has the required features
-- Checking that GLM has the required features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- Found WrapAtomic: TRUE  
-- Found WrapVulkanHeaders: /usr/include  
-- Found OpenGL: /usr/lib/libOpenGL.so   
-- Found WrapOpenGL: TRUE  
-- Found XKB: /usr/lib/libxkbcommon.so (found suitable version "1.6.0", minimum required is "0.5.0") 
-- CPM: using local package Eigen3@3.4.0
-- ABI version: 15
-- Configuring done (1.2s)
-- Generating done (0.0s)
-- Build files have been written to: /home/user/git/cmake_tmp/build

Build:

[user@hostname cmake_tmp]$ cmake --build build --target all
[28/61] Building CXX object CMakeFiles/common.dir/common/EclipsedDoubleScatteringPrecomputer.cpp.o
FAILED: CMakeFiles/common.dir/common/EclipsedDoubleScatteringPrecomputer.cpp.o 
/usr/bin/g++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -I/home/user/git/cmake_tmp/build/common_autogen/include -I/home/user/git/cmake_tmp/build -isystem /usr/include/qt6/QtCore -isystem /usr/include/qt6 -isystem /usr/lib/qt6/mkspecs/linux-g++ -isystem /usr/include/qt6/QtOpenGL -isystem /usr/include/qt6/QtGui -isystem /usr/include/qt6/QtWidgets -isystem /usr/include/eigen3 -Werror=return-type -Wall -Wextra -fvisibility=hidden -fPIC -std=gnu++17 -mno-direct-extern-access -MD -MT CMakeFiles/common.dir/common/EclipsedDoubleScatteringPrecomputer.cpp.o -MF CMakeFiles/common.dir/common/EclipsedDoubleScatteringPrecomputer.cpp.o.d -o CMakeFiles/common.dir/common/EclipsedDoubleScatteringPrecomputer.cpp.o -c /home/user/git/CalcMySky/common/EclipsedDoubleScatteringPrecomputer.cpp
In file included from /home/user/git/CalcMySky/common/EclipsedDoubleScatteringPrecomputer.cpp:6:
/usr/include/glm/gtx/transform.hpp:23:9: error: #error "GLM: GLM_GTX_transform 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_transform 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."
      |         ^~~~~
[29/61] Building CXX object tests/CMakeFiles/test-Spline-interpolation.dir/test-Spline-interpolation.cpp.o