Qt для Windows — Требования
На этой странице описаны необходимые библиотеки и среда для Qt для Windows.
Библиотеки
При запуске приложений Qt 5 на Windows могут использоваться следующие сторонние библиотеки.
-
ICU: Qt 5 может использовать библиотеку ICU для расширенной поддержки UNICODE и глобализации (см. QTextCodec, QCollator::setNumericMode()).
Во время компиляции папки include и lib установки ICU необходимо добавить в переменные среды
INCLUDEиLIB. Во время выполнения DLL ICU необходимо найти, скопировав DLL в папку приложения или добавив папку bin установки ICU в переменную средыPATH. - ANGLE: Эта библиотека преобразует вызовы API OpenGL ES 2.0 в вызовы DirectX 11 или DirectX 9 (в зависимости от доступности), что исключает необходимость установки графических драйверов на целевых машинах.
Поддержка SSL-связи (Secure Sockets Layer) обеспечивается набором инструментов OpenSSL Toolkit, который необходимо получить отдельно. Инструкции по сборке Qt с поддержкой SSL см. в разделе Классы Secure Sockets Layer (SSL).
ICU
Начиная с Qt 5.3 и далее, configure по умолчанию больше не связывает Qt Core с библиотеками ICU. Это значительно уменьшает размер автономного пакета приложения.
Однако использование Qt Core с библиотеками ICU имеет следующие преимущества:
- Поведение более соответствует другим платформам.
- Расширенный набор кодировок текста (см. QTextCodec).
- QLocale::toUpper(), QLocale::toLower() всегда используют правила преобразования регистра, специфичные для языка.
- QCollator::setNumericMode() работает последовательно на всех версиях Windows.
Чтобы явно включить использование ICU в Qt Core, передайте -icu в configure.
configure -icu
Графические драйверы
Для работы Qt Quick 2 требуется графический драйвер, обеспечивающий OpenGL 2.1 или более позднюю версию. По умолчанию в Windows используется драйвер OpenGL 1.1. Qt включает версию проекта ANGLE, которая включена в установщики Qt для Windows. ANGLE реализует API OpenGL ES 2.0 поверх DirectX 11 или DirectX 9. ANGLE требует установки DirectX SDK при сборке Qt.
ANGLE выбирает бэкенд отрисовки в зависимости от доступности. DirectX 11 обычно предпочтительнее. Однако некоторые графические карты могут его не полностью поддерживать. В таких случаях для управления бэкендом отрисовки можно использовать переменную среды QT_ANGLE_PLATFORM (введена в Qt 5.4). Возможные значения — d3d11, d3d9 и warp.
Для использования пользовательской версии ANGLE, установите переменную среды ANGLE_DIR на указатель на дерево исходного кода ANGLE перед сборкой Qt.
Если вы установили дополнительные графические драйверы от производителя вашего оборудования, то вы можете рассмотреть использование этой версии OpenGL вместо ANGLE. Для использования OpenGL передайте параметры командной строки -opengl desktop в скрипт configure.
configure -opengl desktop
Для использования эмулятора OpenGL ES 2.0 вместо ANGLE используйте параметры конфигурации: -opengl es2 -no-angle.
configure -opengl es2 -no-angle
Динамическая загрузка графических драйверов
Помимо конфигурации во время сборки, Qt поддерживает выбор и загрузку реализации OpenGL во время выполнения. Для использования этого режима передайте -opengl dynamic в скрипт configure.
configure -opengl dynamic
Примечание: Начиная с Qt 5.5, эта конфигурация используется официальными предварительно скомпилированными двоичными пакетами Qt. Сильно рекомендуется использовать её и в пользовательских сборках, особенно для Qt библиотек, которые развертываются вместе с приложениями.
Примечание: Объединение -opengl dynamic с -static также возможно, но имейте в виду, что ANGLE в этом случае не будет статически подключаться к приложениям, он всё ещё будет собираться как динамическая библиотека.
Эта конфигурация является наиболее гибкой, так как зависимости и предположения относительно реализации OpenGL не жестко закодированы во время сборки. Это позволяет надежно развертывать приложения. Когда определённая среда не предоставляет надлежащей реализации OpenGL 2.0, происходит автоматическое отключение к ANGLE. Это отключение будет полностью прозрачным для приложения, и позволит Qt Quick или другому коду OpenGL функционировать путем перевода в Direct3D. Такое отключение может, например, произойти на компьютере с Windows 7 без дополнительных графических драйверов. На других машинах, где есть достаточная поддержка OpenGL, будут использоваться стандартные драйверы OpenGL.
При конфигурировании с -opengl dynamic, ни Qt, ни приложения, собранные с помощью qmake, не будут связаны с библиотеками opengl32 (стандартный OpenGL) или libGLESv2 (ANGLE). Вместо этого соответствующая библиотека выбирается во время выполнения. По умолчанию Qt определит, предоставляет ли opengl32.dll функции OpenGL 2. Если они есть, используется opengl32.dll, иначе используются библиотеки ANGLE. Если библиотеки ANGLE отсутствуют или инициализация по какой-то причине завершается неудачно, делается попытка дополнительного отключения, пытаясь загрузить opengl32sw.dll.
Механизм загрузки можно настроить через переменную среды QT_OPENGL и следующие атрибуты приложения:
-
Qt::AA_UseDesktopOpenGLЭквивалентно установкеQT_OPENGLнаdesktop. -
Qt::AA_UseOpenGLESЭквивалентно установкеQT_OPENGLнаangle. -
Qt::AA_UseSoftwareOpenGLЭквивалентно установкеQT_OPENGLнаsoftware.
Когда определенная конфигурация запрошена явно, во время запуска приложения проверки не проводятся, то есть система opengl32.dll не будет проверяться.
Динамическая загрузка оказывает существенное влияние на приложения, содержащие собственные вызовы OpenGL: они могут не связаться, так как qmake больше не автоматически добавляет opengl32.lib или libglesv2.lib. Вместо этого ожидается, что приложения будут использовать функции OpenGL через класс QOpenGLFunctions. Таким образом, прямая зависимость от библиотеки OpenGL удаляется, и все вызовы будут перенаправлены во время выполнения на реализацию, выбранную Qt.
Приложения, которые требуют определенной реализации OpenGL (например, настольного OpenGL из-за использования функций OpenGL 3.0 или более поздних версий), должны установить атрибуты приложения Qt::AA_UseOpenGLES или Qt::AA_UseDesktopOpenGL перед созданием экземпляра QGuiApplication или QApplication. При установке этих атрибутов другие реализации OpenGL не рассматриваются. Кроме того, такие приложения могут делать прямые вызовы функций OpenGL, добавив opengl32.lib в свои файлы проекта .pro: LIBS += opengl32.lib (Visual Studio) или LIBS += -lopengl32 (MinGW). Результат с точки зрения приложения эквивалентен конфигурации сборки -opengl desktop Qt.
Qt::AA_UseSoftwareOpenGL — специальный случай, так как он попытается загрузить реализацию OpenGL с нестандартным именем. Имя по умолчанию — opengl32sw.dll. Это позволяет поставлять программную реализацию OpenGL, например, сборку Mesa с llvmpipe, под этим именем. При необходимости имя файла можно переопределить, установив переменную среды QT_OPENGL_DLL.
Возможна настройка конфигурационного файла в формате JSON, указывающего, какую реализацию OpenGL использовать в зависимости от графической карты и версии драйвера. Путь к файлу задаётся переменной среды QT_OPENGL_BUGLIST. Относительные пути разрешаются с использованием QLibraryInfo::SettingsPath или QStandardPaths::ConfigLocation. Файл использует формат списка ошибок драйвера, используемый в проектах Chromium. Он состоит из списка записей, каждая из которых определяет набор условий и список ключевых слов функций. Как правило, для сопоставления определённой графической карты используются идентификаторы устройства и поставщика. Их можно найти в выводе инструмента qtdiag или dxdiag.
Следующие ключевые слова функций важны для выбора реализации OpenGL:
-
disable_desktopgl— отключает OpenGL. Это гарантирует, что Qt не будет пытаться использовать обычный OpenGL (opengl32.dll) и сразу начнёт с ANGLE. Это полезно для предотвращения сбоев приложений нестабильными графическими драйверами OpenGL. -
disable_angle— отключает ANGLE. Гарантирует, что Qt не будет пытаться использовать ANGLE (и поэтому Direct3D). -
disable_d3d11— отключает растризатор D3D11 в ANGLE. Вместо этого, сначала используется следующий вариант рендеринга D3D. По умолчанию порядок: D3D11, D3D9, WARP, реализация по умолчанию. -
disable_d3d9— отключает растризатор D3D9 в ANGLE -
disable_rotation— всегда принудительно устанавливает ориентацию приложения в альбомную. Это относится только к OpengGL и не имеет эффекта при использовании ANGLE или программной реализации OpenGL. Это предназначено для драйверов, у которых есть проблемы с поворотом. Это ключевое слово функции было введено в Qt 5.6.
Пример файла:
{
"entries": [
{
"id": 1,
"description": "Disable D3D11 on older nVidia drivers",
"os": {
"type": "win"
},
"vendor_id": "0x10de",
"device_id": ["0x0DE9"],
"driver_version": {
"op": "<=",
"value": "8.17.12.6973"
},
"features": [
"disable_d3d11"
]
},
... Когда QT_OPENGL_BUGLIST не указан, будет использоваться встроенный список. В него, как правило, входят некоторые устаревшие и менее мощные графические карты с disable_desktopgl установленными для предотвращения использования их нестабильных реализаций настольного OpenGL и вместо этого немедленно перехода к ANGLE.
На практике наиболее распространёнными комбинациями, скорее всего, будут следующие:
-
disable_desktopgl— в случае, если система предоставляет OpenGL 2.0 или новее, но известно, что драйвер нестабилен и склонен к сбоям. -
disable_desktopgl, disable_angle — когда не требуется ускоренный путь. Это гарантирует, что Qt будет пытаться использовать только программный растризатор (opengl32sw.dll). Может быть полезно в виртуальных машинах и приложениях, которые развертываются на широком спектре старых систем. -
disable_d3d11, disable_d3d9 — когда известны нестабильности ускоренных вариантов D3D, и нужен WARP (если он доступен). Может быть полезно в виртуальных машинах.
Поддерживаемые ключи для сопоставления заданной карты или драйвера. Обратите внимание, что некоторые из них специфичны для Qt.
-
os.type- Операционная система:win,linux,macosx,android -
os.version- Версия ядра -
os.release- Указывает список выпусков операционной системы Windows:xp,vista,7,8,8.1,10. -
vendor_id- Производитель по идентификатору адаптера -
device_id- Список идентификаторов устройств PCI. -
driver_version- Версия драйвера по идентификатору адаптера -
driver_description- Совпадает, когда значение является подстрокой описания драйвера по идентификатору адаптера -
gl_vendor- Совпадает, когда значение является подстрокой строкиGL_VENDOR
Компиляция из исходного кода
Эти инструменты не нужны для запуска приложений Qt 5, но они необходимы для компиляции Qt 5 из исходного кода.
-
ActivePerl - Установите последнюю версию ActivePerl (страница загрузки) и добавьте место установки в
PATH. - Python - Установите Python из здесь и добавьте место установки в переменную среды PATH.
Примечание: Убедитесь, что исполняемый файл perl из ActivePerl находится в пути перед исполняемым файлом perl, предоставляемым msysgit, так как последний устарел.
ANGLE зависит от дополнительных инструментов из проектов GnuWin32 и Win flex-bison, которые предоставляются для удобства в папке gnuwin32/bin:
Папка gnuwin32/bin должна быть добавлена в переменную PATH.
Примечание: Если вы собираете qtbase вне qt5.git, вам нужно загрузить win_bison и win_flex по ссылке выше и переименовать их в bison и flex.
Инструкции по компиляции исходного кода Qt 5 можно найти на странице Qt для Windows - Компиляция из исходного кода.
SDK и компиляторы
Для разработки приложений Qt на Windows требуется Windows SDK.
- Windows SDK 8 (с Visual Studio 2012 Express). Начиная с Windows 8, SDK больше не поставляется с полной средой командной строки для компиляции. Вы должны установить компилятор и среду компиляции отдельно. Если вам нужна полная среда разработки, которая включает компиляторы и среду компиляции, вы можете загрузить Visual Studio 2012 Express, которая включает соответствующие компоненты Windows SDK. (Страница загрузки)
- Windows SDK 7.1. Обратите внимание, что по состоянию на 16.03.2012, если вы используете этот SDK с Visual Studio 2010, установка SDK требует установки следующих пакетов в указанном порядке (см. readme.html, предоставленное вместе с сервисным пакетом):
- Установить Visual Studio 2010
- Установить Windows SDK 7.1
- Установить Visual Studio 2010 SP1
- Установить обновление компилятора Visual C++ 2010 SP1 для Windows SDK 7.1
- Windows SDK 7.
- MinGW инструмент с g++ версии 4.7 или выше. Qt 5 регулярно тестируется с 32-битной цепочкой инструментов gcc 4.9.1 из проекта MinGW-w64.
Qt WebEngine имеет дополнительные требования к компиляции, которые перечислены в Заметках по платформам Qt WebEngine.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/windows-requirements.html