Spec-Zone.ru › Qt 5.13

Qt для macOS

macOS (ранее известная как OS X или Mac OS X) — операционная система Apple для компьютеров Mac. Это платформа UNIX, основанная на ядре Darwin, и в значительной степени похожая на другие платформы типа UNIX. Основное отличие заключается в том, что X11 не используется в качестве оконной системы. Вместо этого macOS использует собственную нативную оконную систему, доступную через API Cocoa.

Чтобы загрузить и установить Qt для macOS, следуйте инструкциям на странице Начало работы с Qt.

Поддерживаемые версии

При обсуждении поддержки версий macOS важно различать среду разработки (платформа, на которой вы разрабатываете), и целевые платформы (платформы, для которых вы разрабатываете). Поддерживаются следующие версии macOS.

Целевая платформа Архитектура Среда разработки
macOS 10.12, 10.13, 10.14 x86_64 и x86_64h Xcode 10 (SDK 10.14), Xcode 9* (SDK 10.13)

Примечание: Xcode 9 поддерживается только для разработки приложений (для возможности отказа от функций, таких как отслеживание слоев и тёмный режим), а не для разработки самого Qt.

Среда разработки

Среда разработки на macOS определяется исключительно версией Xcode, используемой для сборки приложения. Xcode содержит как инструментарий (компилятор, компоновщик и другие инструменты), так и платформенную SDK macOS (заголовки и библиотеки). Вместе они определяют способ сборки вашего приложения.

Примечание: Версия macOS, на которой вы запускаете Xcode, не имеет значения. До тех пор, пока Apple предоставляет определённую версию Xcode, работающую на вашей операционной системе, среда разработки будет определяться этой версией Xcode.

Xcode можно загрузить с веб-сайта разработчиков Apple developer website (включая более старые версии Xcode). После установки выбор установки Xcode осуществляется с помощью xcode-select инструмента.

$ sudo xcode-select --switch /Applications/Xcode.app

Вы можете проверить глобально выбранную установку Xcode, используя тот же инструмент.

$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

Команда xcrun может затем использоваться для поиска конкретного инструмента в инструментарии.

$ xcrun -sdk macosx -find clang
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang

или показать путь к платформенной SDK, используемый при сборке.

$ xcrun -sdk macosx --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk

Целевые платформы

Сборка для macOS использует технику слабой связи, которая позволяет вам собирать приложение относительно заголовков и библиотек последней платформенной SDK, при этом позволяя вашему приложению развертываться на версиях macOS ниже версии SDK. Когда двоичный файл запускается на версии macOS ниже версии SDK, с которой он был собран, Qt проверяет во время выполнения, доступна ли платформа функция, прежде чем использовать её.

Теоретически это позволило бы запускать приложение на каждой выпущенной версии macOS, но по практическим (и техническим) причинам существует нижний предел этого диапазона, известный как целевая платформа вашего приложения. Если двоичный файл запускается на версии macOS ниже целевой, macOS или Qt выдаст сообщение об ошибке, и приложение не запустится.

Qt выражает целевую платформу через переменную qmake QMAKE_MACOSX_DEPLOYMENT_TARGET, которая имеет значение по умолчанию, заданное makespec для macOS. Вам не должно потребоваться менять это значение по умолчанию, но при необходимости вы можете увеличить его в файле проекта:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13

Примечание: Не следует понижать целевую платформу ниже значения по умолчанию, установленного Qt. Это может привести к сбоям во время выполнения, если двоичный файл затем развернут на версии macOS ниже той, на которой Qt ожидает работы.

Всегда собирая относительно последней доступной платформенной SDK, вы обеспечиваете, что Qt может использовать новые функции, представленные в последних версиях macOS.

Дополнительную информацию о разработке на основе SDK на macOS см. в документации разработчиков Apple developer documentation.

Отказ от изменений поведения macOS

Одно замечание по использованию последней версии Xcode и SDK для сборки вашего приложения состоит в том, что системные фреймворки macOS иногда принимают решение о том, включать ли изменения поведения, исходя из SDK, с которой было собрано ваше приложение.

Например, когда тёмный режим был представлен в macOS 10.14 Mojave, macOS рассматривал приложения, собранные относительно SDK 10.14, как поддерживающие тёмный режим, и оставлял приложения, собранные относительно более ранних SDK, с обычным светлым режимом. Эта техника позволяет Apple гарантировать, что двоичные файлы, созданные задолго до выпуска новой SDK и операционной системы, по-прежнему будут работать без регрессий при выпуске новых версий macOS.

Следствием этого является то, что если Qt испытывает проблемы с некоторыми из этих функций macOS (тёмный режим, слоированные представления), единственный способ отказаться от них — сборка с использованием более ранней SDK (SDK 10.13, доступной через Xcode 9). Это крайнее решение и должно применяться только в том случае, если у вашего приложения нет других способов решения проблемы.

Архитектуры

По умолчанию Qt собирается для x86_64. Чтобы собрать для x86_64h (Haswell), используйте переменную QMAKE_APPLE_DEVICE_ARCHS qmake. Это можно выбрать на стадии конфигурации:

./configure -platform macx-clang QMAKE_APPLE_DEVICE_ARCHS=x86_64h

QMAKE_APPLE_DEVICE_ARCHS также может быть указано как список, разделённый пробелами, чтобы собрать для нескольких архитектур одновременно:

./configure -platform macx-clang QMAKE_APPLE_DEVICE_ARCHS="x86_64 x86_64h"

Дополнительные параметры командной строки

В командной строке приложения могут собираться с помощью qmake и make. В качестве опции qmake может генерировать файлы проекта для Xcode с помощью -spec macx-xcode. Если вы используете двоичный пакет, qmake генерирует проекты Xcode по умолчанию; используйте -spec macx-gcc для генерации файлов make. Например:

qmake -spec macx-xcode project.pro

Конфигурация с -spec macx-xcode генерирует файл проекта Xcode из project.pro. С помощью qmake вам не нужно беспокоиться о правилах для препроцессоров Qt (moc и uic), поскольку qmake автоматически обрабатывает их и гарантирует, что всё необходимое связано в вашем приложении.

Qt не взаимодействует напрямую со средой разработки (например, плагины для пометки файла как «мокабельного» из интерфейса пользователя Xcode).

Результатом процесса сборки является пакет приложения, представляющий собой структуру каталогов, содержащую фактический исполняемый файл приложения. Приложение можно запустить, дважды щелкнув его в Finder, или обратившись напрямую к его исполняемому файлу из командной строки, например myApp.app/Contents/MacOS/myApp.

Если вам требуется командная строка, которая не использует графический интерфейс, например moc, uic или ls, вы можете сказать qmake отключить создание пакета из переменной CONFIG в файле проекта:

CONFIG -= app_bundle

Развёртывание приложений на macOS

Приложения macOS обычно развёртываются в виде автономных пакетов приложений. Пакет приложения содержит исполняемый файл приложения, а также зависимости, такие как библиотеки Qt, плагины, переводы и другие ресурсы, которые могут потребоваться. Библиотеки сторонних производителей, такие как Qt, обычно не устанавливаются в систему; каждое приложение предоставляет собственную копию.

Распространённый способ распространения приложений — предоставление сжатого образа диска (.dmg-файл), который пользователь может смонтировать в Finder. Инструмент развёртывания macdeployqt (доступный из установочных пакетов macOS) можно использовать для создания автономных пакетов и, по желанию, создания .dmg-архива. Приложения также могут распространяться через Mac App Store. Qt 5 стремится оставаться в рамках правил песочницы магазина приложений. macdeployqt (bin/macdeployqt) можно использовать в качестве отправной точки для развёртывания в магазине приложений.

  • Qt для macOS — Развертывание

Вопросы по macOS

На странице ниже рассматриваются конкретные проблемы и рекомендации по созданию приложений macOS.

  • Qt для macOS — Конкретные проблемы

Куда двигаться дальше

Мы приглашаем вас исследовать остальную часть Qt. Мы подготовили обзоры, чтобы помочь вам выбрать, какие API использовать, и наши примеры демонстрируют, как использовать наш API.

  • Обзоры Qt — список тем по разработке приложений
  • Примеры и руководства — примеры кода и руководства
  • Справочные страницы Qt — перечень API C++ и QML

Сайт активного сообщества Qt, http://qt.io содержит вики, форум и дополнительные руководства по обучению и презентации.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/macos.html

Spec-Zone.ru

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