Spec-Zone.ru › Qt 5.12

Qt для Windows — Требования

На этой странице описаны необходимые библиотеки и среда для Qt для Windows.

Библиотеки

При запуске приложений Qt 5 на Windows могут использоваться следующие сторонние библиотеки.

  • ICU: Qt 5 может использовать библиотеку ICU для расширенной поддержки UNICODE и глобализации (см. QTextCodec, QCollator::setNumericMode()).

    Во время компиляции каталоги include и lib установки ICU необходимо добавить в переменные среды INCLUDE и LIB. Во время выполнения приложения DLL-файлы ICU должны быть найдены, скопировав их в папку приложения или добавив папку bin установки ICU в переменную среды PATH.

  • ANGLE: Эта библиотека преобразует вызовы API OpenGL ES 2.0 в вызовы DirectX 11 или DirectX 9 (в зависимости от доступности), устраняя необходимость установки графических драйверов на целевых машинах.

Поддержка защищённого сокетного слоя (SSL) обеспечивается инструментом OpenSSL Toolkit, который необходимо получить отдельно. Инструкции по сборке Qt с поддержкой SSL см. в разделе Классы защищённого сокетного слоя (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.

Для сборки Qt требуется установка DirectX SDK. При использовании MSVC DirectX SDK предоставляется Windows SDK. В этом случае вам потребуется как минимум Windows SDK 10. Для сборок с MinGW необходимо установить DirectX SDK, предоставленный Microsoft.

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 не будет проверяться.

Динамическая загрузка существенно влияет на приложения, содержащие вызовы native 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:

  • GPerf
  • Bison, Flex

Папка 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 for 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, Идентификатор пакета: l_cc_pc_8.1.030

GCC (MinGW-сборки)

Минимальная поддерживаемая версия MinGW-сборок — GCC 4.9.1 (64-разрядная, 32-разрядная), доступная на его странице загрузки.

Дополнительная информация о 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.

Зависимости 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/qt-5.12/windows-requirements.html

Spec-Zone.ru

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