FindModule for OpenGL and GLU.
This module respects several optional COMPONENTS: EGL, GLX, and OpenGL. There are corresponding import targets for each of these flags.
This module defines the IMPORTED targets:
OpenGL::GL OpenGL::OpenGL OpenGL::GLU OpenGL::GLX OpenGL::EGL This module sets the following variables:
OPENGL_FOUND OPENGL_XMESA_FOUND OPENGL_GLU_FOUND OpenGL_OpenGL_FOUND OpenGL_GLX_FOUND OpenGL_EGL_FOUND OPENGL_INCLUDE_DIR OPENGL_EGL_INCLUDE_DIRS OPENGL_LIBRARIES OpenGL::* import targets instead.The following cache variables may also be set:
OPENGL_egl_LIBRARY OPENGL_glu_LIBRARY OPENGL_glx_LIBRARY OPENGL_opengl_LIBRARY OPENGL_gl_LIBRARY OpenGL::* import targets.Some Linux systems utilize GLVND as a new ABI for OpenGL. GLVND separates context libraries from OpenGL itself; OpenGL lives in “libOpenGL”, and contexts are defined in “libGLX” or “libEGL”. GLVND is currently the only way to get OpenGL 3+ functionality via EGL in a manner portable across vendors. Projects may use GLVND explicitly with target OpenGL::OpenGL and either OpenGL::GLX or OpenGL::EGL.
Projects may use the OpenGL::GL target (or OPENGL_LIBRARIES variable) to use legacy GL interfaces. These will use the legacy GL library located by OPENGL_gl_LIBRARY, if available. If OPENGL_gl_LIBRARY is empty or not found and GLVND is available, the OpenGL::GL target will use GLVND OpenGL::OpenGL and OpenGL::GLX (and the OPENGL_LIBRARIES variable will use the corresponding libraries). Thus, for non-EGL-based Linux targets, the OpenGL::GL target is most portable.
A OpenGL_GL_PREFERENCE variable may be set to specify the preferred way to provide legacy GL interfaces in case multiple choices are available. The value may be one of:
GLVND OPENGL_gl_LIBRARY to be empty. This is the default if components were requested (since components correspond to GLVND libraries) or if policy CMP0072 is set to NEW.LEGACY CMP0072 is not set to NEW.For EGL targets the client must rely on GLVND support on the user’s system. Linking should use the OpenGL::OpenGL OpenGL::EGL targets. Using GLES* libraries is theoretically possible in place of OpenGL::OpenGL, but this module does not currently support that; contributions welcome.
OPENGL_egl_LIBRARY and OPENGL_EGL_INCLUDE_DIRS are defined in the case of GLVND. For non-GLVND Linux and other systems these are left undefined.
On OSX FindOpenGL defaults to using the framework version of OpenGL. People will have to change the cache values of OPENGL_glu_LIBRARY and OPENGL_gl_LIBRARY to use OpenGL with X11 on OSX.
© 2000–2018 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/module/FindOpenGL.html