FindOpenGL
Модуль поиска OpenGL и GLU.
Необязательные компоненты
Этот модуль учитывает несколько необязательных компонентов: EGL, GLX, и OpenGL. Для каждого из этих флагов существуют соответствующие целевые объекты импорта.
Импортируемые цели
Этот модуль определяет целевые объекты IMPORTED:
-
OpenGL::GL - Определяется для библиотек OpenGL, специфичных для платформы, если система имеет OpenGL.
-
OpenGL::OpenGL - Определяется как libOpenGL, если система основана на GLVND.
-
OpenGL::GLU - Определяется, если система имеет GLU.
-
OpenGL::GLX - Определяется, если система имеет 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–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/module/FindOpenGL.html