Warning with cmake > 3.10 asking to set OpenGL library preference
Using cmake 3.13 on ArchLinux, I have this warning when building Solarus 1.6.0
CMake Warning (dev) at /usr/share/cmake-3.13/Modules/FindOpenGL.cmake:270 (message): Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when available. Run "cmake --help-policy CMP0072" for policy details. Use the cmake_policy command to set the policy and suppress this warning. FindOpenGL found both a legacy GL library: OPENGL_gl_LIBRARY: /usr/lib/libGL.so and GLVND libraries for OpenGL and GLX: OPENGL_opengl_LIBRARY: /usr/lib/libOpenGL.so OPENGL_glx_LIBRARY: /usr/lib/libGLX.so OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for compatibility with CMake 3.10 and below the legacy GL library will be used. Call Stack (most recent call first): cmake/AddDependencies.cmake:11 (find_package) CMakeLists.txt:7 (include) This warning is for project developers. Use -Wno-dev to suppress it.
All the libraries mentioned are part of the same package (libglvnd 1.1.0-1) in ArchLinux, so they are always both installed.
cmake --help-policy CMP0072 gives me that output:
CMP0072 ------- ``FindOpenGL`` prefers GLVND by default when available. The ``FindOpenGL`` module provides an ``OpenGL::GL`` target and an ``OPENGL_LIBRARIES`` variable for projects to use for legacy GL interfaces. When both a legacy GL library (e.g. ``libGL.so``) and GLVND libraries for OpenGL and GLX (e.g. ``libOpenGL.so`` and ``libGLX.so``) are available, the module must choose between them. It documents an ``OpenGL_GL_PREFERENCE`` variable that can be used to specify an explicit preference. When no such preference is set, the module must choose a default preference. CMake 3.11 and above prefer to choose GLVND libraries. This policy provides compatibility with projects that expect the legacy GL library to be used. The ``OLD`` behavior for this policy is to set ``OpenGL_GL_PREFERENCE`` to ``LEGACY``. The ``NEW`` behavior for this policy is to set ``OpenGL_GL_PREFERENCE`` to ``GLVND``. This policy was introduced in CMake version 3.11. CMake version 3.13.1 warns when the policy is not set and uses ``OLD`` behavior. Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW`` explicitly. .. note:: The ``OLD`` behavior of a policy is ``deprecated by definition`` and may be removed in a future version of CMake.
zsxd 1.12.0 with Solarus 1.6.0 works fine despite that, so not a big issue.