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