FindOpenGL
Модуль поиска OpenGL и OpenGL Utility Library (GLU).
Изменено в версии 3.2: X11 больше не добавляется как зависимость в системах Unix/Linux.
Добавлена в версии 3.10: Поддержка GLVND на Linux. См. раздел специфичный для Linux ниже.
Дополнительные КОМПОНЕНТЫ
Добавлена в версии 3.10.
Этот модуль поддерживает несколько дополнительных КОМПОНЕНТОВ: EGL, GLX, и OpenGL. Для каждого из этих флагов существуют соответствующие целевые импорты.
Импортируемые цели
Добавлена в версии 3.8.
Этот модуль определяет следующие IMPORTED цели:
-
OpenGL::GL -
Определяется для платформ-специфичных библиотек OpenGL, если система поддерживает OpenGL.
-
OpenGL::GLU -
Определяется, если система поддерживает OpenGL Utility Library (GLU).
Добавлена в версии 3.10: Кроме того, определяются следующие целевые библиотеки, специфичные для GLVND:
-
OpenGL::OpenGL -
Определяется для libOpenGL, если система основана на GLVND.
-
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::*вместо этого.
Добавлена в версии 3.10: Переменные для библиотек, специфичных для GLVND, OpenGL, EGL и GLX.
Переменные кэша
Также могут быть установлены следующие переменные кэша:
-
OPENGL_egl_LIBRARY -
Путь к библиотеке EGL.
-
OPENGL_glu_LIBRARY -
Путь к библиотеке GLU.
-
OPENGL_glx_LIBRARY -
Путь к библиотеке GLVND 'GLX'.
-
OPENGL_opengl_LIBRARY -
Путь к библиотеке GLVND 'OpenGL'.
-
OPENGL_gl_LIBRARY -
Путь к библиотеке OpenGL. Новый код должен отдавать предпочтение целевым импортам
OpenGL::*.
Добавлена в версии 3.10: Переменные для библиотек, специфичных для GLVND, OpenGL, EGL и GLX.
Специфичные для 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 будет использовать соответствующие библиотеки). Таким образом, для целей Linux, не использующих EGL, цель OpenGL::GL является наиболее совместимой.
Переменная OpenGL_GL_PREFERENCE может быть установлена для указания предпочтительного способа предоставления устаревших интерфейсов GL в случае наличия нескольких вариантов. Значение может быть одним из:
-
GLVND -
Если библиотеки GLVND OpenGL и GLX доступны, отдавать им предпочтение. Это заставляет
OPENGL_gl_LIBRARYбыть пустым.Изменено в версии 3.11: Это значение по умолчанию, если политика
CMP0072установлена вOLD, и компоненты не запрашиваются (поскольку компоненты соответствуют библиотекам GLVND). -
LEGACY -
Отдавать предпочтение использованию библиотеки libGL, если она доступна.
Для целей 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–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/module/FindOpenGL.html