Spec-Zone.ru › CMake 3.30

FindOpenGL

FindModule для 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 Extension для 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

Если библиотеки OpenGL и GLX GLVND доступны, отдавать предпочтение им. Это принудительно устанавливает 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/v3.30/module/FindOpenGL.html

Spec-Zone.ru

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