Spec-Zone.ru › CMake 3.22

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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/module/FindOpenGL.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API