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 (в зависимости от доступности), устраняя необходимость установки графических драйверов на целевых машинах.
Поддержка связи Secure Sockets Layer (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, которая включена в установщики 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 -opengl desktop
Для использования эмулятора OpenGL ES 2.0 вместо ANGLE используйте опции конфигурации: -opengl es2 -no-angle.
configure -opengl es2 -no-angle
Динамическая загрузка графических драйверов
В дополнение к конфигурации на этапе компиляции Qt поддерживает выбор и загрузку реализации OpenGL во время выполнения. Для использования этого режима передайте -opengl dynamic в скрипт конфигурации.
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 в качестве дополнительных обратных вызовов, позволяющие запускать приложения 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. Файл использует формат списка ошибок драйвера, используемого в проектах The Chromium Projects. Он состоит из списка записей, каждая из которых указывает набор условий и список ключевых слов функций. Обычно используются идентификаторы устройства и поставщика, для сопоставления конкретной видеокарты. Их можно найти в выводе инструмента 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 2013 (Update 1), Visual Studio 2015 (Update 2), Visual C++ Build Tools 2015, 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, сборка 20050406, идентификатор пакета: l_cc_pc_8.1.030
GCC (MinGW-сборки)
Минимальная поддерживаемая версия MinGW-сборок — GCC 4.9.1 (64bit, 32bit), доступная на его странице загрузки.
Дополнительную информацию о MinGW-сборках см. в разделе «Справочная конфигурация» на странице поддерживаемых платформ.
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.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/windows-requirements.html