Spec-Zone.ru › CMake

FindOpenGL

Модуль поиска OpenGL и OpenGL Utility Library (GLU).

Изменено в версии 3.2: X11 больше не добавляется как зависимость на Unix/Linux системах.

Добавлена в версии 3.10: Поддержка GLVND на Linux. См. раздел Специфичный для Linux ниже.

Дополнительные КОМПОНЕНТЫ

Добавлена в версии 3.10.

Этот модуль учитывает несколько дополнительных КОМПОНЕНТОВ:

EGL

Интерфейс EGL между OpenGL, OpenGL ES и базовой системой окон.

GLX

Расширение для X, которое взаимодействует с OpenGL, OpenGL ES и системой окон X.

OpenGL

Кроссплатформенный API для 3D-графики.

GLES2

Добавлена в версии 3.27.

Подмножество API OpenGL для систем встраиваемой электроники с ограниченными возможностями.

GLES3

Добавлена в версии 3.27.

Подмножество API 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::GLES2

Добавлена в версии 3.27.

Определяется, если на системе есть GLES2.

OpenGL::GLES3

Добавлена в версии 3.27.

Определяется, если на системе есть GLES3.

Переменные результатов

Этот модуль устанавливает следующие переменные:

OPENGL_FOUND

Истина, если на системе есть OpenGL и все компоненты найдены.

OPENGL_XMESA_FOUND

Истина, если на системе есть XMESA.

OPENGL_GLU_FOUND

Истина, если на системе есть GLU.

OpenGL_OpenGL_FOUND

Истина, если на системе есть библиотека OpenGL.

OpenGL_GLX_FOUND

Истина, если на системе есть GLX.

OpenGL_EGL_FOUND

Истина, если на системе есть EGL.

OpenGL::GLES2

Определяется, если на системе есть GLES2.

OpenGL::GLES3

Определяется, если на системе есть GLES3.

OPENGL_INCLUDE_DIR

Путь к каталогу заголовков OpenGL. Предпочтительнее использовать переменную OPENGL_INCLUDE_DIRS.

OPENGL_EGL_INCLUDE_DIRS

Путь к каталогу заголовков EGL.

OPENGL_LIBRARIES

Пути к библиотекам OpenGL, библиотекам систем окон и библиотекам GLU. На Linux это предполагает GLX и никогда не является правильным для целей, основанных на EGL. Клиентам рекомендуется использовать импортируемые цели OpenGL::* вместо этого.

OPENGL_INCLUDE_DIRS

Добавлена в версии 3.29.

Пути к каталогам заголовков 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::*.

OPENGL_gles2_LIBRARY

Добавлена в версии 3.27.

Путь к библиотеке OpenGL GLES2.

OPENGL_gles3_LIBRARY

Добавлена в версии 3.27.

Путь к библиотеке OpenGL GLES3.

OPENGL_GLU_INCLUDE_DIR

Добавлена в версии 3.29.

Путь к каталогу заголовков OpenGL GLU.

Добавлена в версии 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

В macOS этот модуль по умолчанию использует версию OpenGL из встроенной в macOS структуры. Чтобы использовать версию OpenGL из X11 в macOS, можно отключить поиск фреймворков. Например:

find_package(X11)
if(APPLE AND X11_FOUND)
  set(CMAKE_FIND_FRAMEWORK NEVER)
  find_package(OpenGL)
  unset(CMAKE_FIND_FRAMEWORK)
else()
  find_package(OpenGL)
endif()

Пользователю, который собирает этот проект, может потребоваться указать CMake на своё установленное X11, например, с помощью -DOpenGL_ROOT=/opt/X11.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/FindOpenGL.html

Spec-Zone.ru

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