Spec-Zone.ru › CMake 3.24

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 для 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.21/module/FindOpenGL.html

Spec-Zone.ru

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