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-связи обеспечивается набором инструментов OpenSSL Toolkit, который необходимо получить отдельно. См. Классы Secure Sockets Layer (SSL) для инструкций по компиляции Qt с поддержкой SSL.
ICU
Начиная с Qt 5.3 и далее, конфигуратор по умолчанию больше не связывает Qt Core с библиотеками ICU. Это значительно уменьшает размер автономного пакета приложения.
Однако использование библиотек ICU в Qt Core имеет следующие преимущества:
- Поведение соответствует другим платформам.
- Расширенный набор кодировок текста (см. 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, которая включена в установщики Windows Qt. 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 как дополнительные резервные варианты, позволяющие запускать приложения Qt Quick без графического процессора.
При конфигурации с -opengl dynamic, ни Qt, ни приложения, построенные с помощью qmake, не будут связаны с библиотеками opengl32 (стандартный OpenGL) или QtANGLE. Вместо этого соответствующая библиотека выбирается во время выполнения. По умолчанию Qt определяет, предоставляет ли opengl32.dll функции OpenGL 2. Если они присутствуют, используется opengl32.dll, в противном случае будут использоваться библиотеки ANGLE (libEGL.dll и libGLESv2.dll). Если библиотеки 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 установленным, чтобы предотвратить использование Qt их нестабильных реализаций настольного 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 - Сборка из исходного кода.
Компиляторы
Visual Studio
Qt можно собрать с помощью Visual Studio 2015 (Update 2), Visual Studio 2017 и Build Tools для Visual Studio 2017 (см. также Поддерживаемые платформы).
Intel C++ Компилятор (Windows, Altix)
Qt успешно протестирован с:
- Windows - Intel(R) C++ Компилятор для 32-битных приложений, версия 9.1.040.
- Altix - Intel(R) C++ Itanium(R) Компилятор для приложений на базе Itanium(R), версия 8.1 Build 20050406, пакет ID: l_cc_pc_8.1.030
GCC (MinGW-сборки)
Минимальная поддерживаемая версия MinGW-сборок — GCC 4.9.1 (64-битная, 32-битная), доступная на странице загрузки.
Дополнительную информацию о MinGW-сборках см. в разделе Reference Configuration на странице поддерживаемых платформ.
Clang(clang-cl)
Qt успешно протестирован с Clang 3.8 (llvm svn rev. 256453 и clang svn rev. 256453). Для сборки clang использовался Visual Studio 2015 Update 1. Mkspec использует инструмент clang-cl для сборки Qt. Clang 3.8 не поддерживает предварительно скомпилированные заголовки.
Сборка Qt WebEngine
Qt WebEngine имеет дополнительные требования к сборке, перечисленные в Заметки к платформе Qt WebEngine.
Зависимости QDoc
Начиная с версии 5.11, QDoc использует Clang для анализа кода C++. Если вы хотите собрать QDoc вручную, см. Установку Clang для QDoc для получения подробных требований к сборке.
См. также Зависимости QDoc.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/windows-requirements.html