FindOpenGL
FindModule для OpenGL и OpenGL Utility Library (GLU).
Дополнительные компоненты
Этот модуль учитывает несколько дополнительных компонентов: EGL, GLX, и OpenGL. Для каждого из этих флагов существуют соответствующие импортируемые цели.
Импортируемые цели
Этот модуль определяет IMPORTED цели:
-
OpenGL::GL -
Определяется для платформ-специфичных библиотек OpenGL, если на системе установлен OpenGL.
-
OpenGL::OpenGL -
Определяется для libOpenGL, если система основана на GLVND.
-
OpenGL::GLU -
Определяется, если на системе установлена OpenGL Utility Library (GLU).
-
OpenGL::GLX -
Определяется, если на системе установлен OpenGL Extension для X Window System (GLX).
-
OpenGL::EGL -
Определяется, если на системе установлен EGL.
Переменные результата
Этот модуль устанавливает следующие переменные:
-
OPENGL_FOUND -
Истина, если на системе установлен OpenGL и все компоненты найдены.
-
OPENGL_XMESA_FOUND -
Истина, если на системе установлен XMESA.
-
OPENGL_GLU_FOUND -
Истина, если на системе установлена GLU.
-
OpenGL_OpenGL_FOUND -
Истина, если на системе установлена библиотека OpenGL.
-
OpenGL_GLX_FOUND -
Истина, если на системе установлен GLX.
-
OpenGL_EGL_FOUND -
Истина, если на системе установлен EGL.
-
OPENGL_INCLUDE_DIR -
Путь к каталогу заголовков OpenGL.
-
OPENGL_EGL_INCLUDE_DIRS -
Путь к каталогу заголовков EGL.
-
OPENGL_LIBRARIES -
Пути к библиотеке OpenGL, библиотекам системного отображения и библиотекам GLU. В Linux это предполагает GLX и никогда не верно для целей на основе EGL. Клиентам рекомендуется использовать цели импорта
OpenGL::*вместо этого.
Переменные кэша
Также могут быть установлены следующие переменные кэша:
-
OPENGL_egl_LIBRARY -
Путь к библиотеке EGL.
-
OPENGL_glu_LIBRARY -
Путь к библиотеке GLU.
-
OPENGL_glx_LIBRARY -
Путь к библиотеке GLVND ‘GLX’.
-
OPENGL_opengl_LIBRARY -
Путь к библиотеке GLVND ‘OpenGL’
-
OPENGL_gl_LIBRARY -
Путь к библиотеке OpenGL. Новый код должен предпочитать импортируемые цели
OpenGL::*.
Специфика Linux
Некоторые системы Linux используют GLVND в качестве нового ABI для OpenGL. GLVND отделяет библиотеки контекстов от самого OpenGL; OpenGL находится в «libOpenGL», а контексты определены в «libGLX» или «libEGL». GLVND в настоящее время является единственным способом получить функциональность OpenGL 3+ через EGL способом, портативным для разных поставщиков. Проекты могут использовать GLVND явно с целевой OpenGL::OpenGL и либо OpenGL::GLX или OpenGL::EGL.
Проекты могут использовать цель OpenGL::GL (или переменную OPENGL_LIBRARIES) для использования устаревших интерфейсов GL. Эти интерфейсы будут использовать устаревшую библиотеку GL, расположенную по адресу OPENGL_gl_LIBRARY, если она доступна. Если OPENGL_gl_LIBRARY пустая или не найдена, а GLVND доступен, цель OpenGL::GL будет использовать GLVND OpenGL::OpenGL и OpenGL::GLX (и переменная OPENGL_LIBRARIES будет использовать соответствующие библиотеки). Таким образом, для не-EGL-ориентированных целей Linux цель OpenGL::GL является наиболее портативной.
Переменная OpenGL_GL_PREFERENCE может быть установлена для указания предпочтительного способа предоставления устаревших интерфейсов GL в случае наличия нескольких вариантов. Значение может быть одним из:
-
GLVND -
Если библиотеки GLVND OpenGL и GLX доступны, предпочтительнее использовать их. Это вынуждает
OPENGL_gl_LIBRARYбыть пустым. Это значение по умолчанию, если были запрошены компоненты (так как компоненты соответствуют библиотекам GLVND) или если политикаCMP0072установлена в значениеNEW. -
LEGACY -
Предпочитать использование библиотеки libGL, если она доступна. Это значение по умолчанию, если не было запрошено никаких компонентов и политика
CMP0072не установлена в значениеNEW.
Для целей EGL клиент должен полагаться на поддержку GLVND на системе пользователя. Связывание должно использовать цели OpenGL::OpenGL OpenGL::EGL. Использование библиотек GLES* теоретически возможно вместо OpenGL::OpenGL, но этот модуль в настоящее время эту возможность не поддерживает; предложения приветствуются.
OPENGL_egl_LIBRARY и OPENGL_EGL_INCLUDE_DIRS определяются в случае GLVND. Для систем Linux не на основе GLVND и других систем эти значения не определяются.
Особенности macOS
В OSX FindOpenGL по умолчанию использует версию OpenGL из фреймворка. Пользователям придется изменить значения кэша OPENGL_glu_LIBRARY и OPENGL_gl_LIBRARY, чтобы использовать OpenGL с X11 в OSX.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.15/module/FindOpenGL.html