Spec-Zone.ru › Qt 6.0

Qt для macOS

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

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

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

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

Целевая платформа Архитектура Среда разработки
macOS 10.14, 10.15, 11.0 x86_64 и x86_64h Xcode 12 (SDK 10.15)

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

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

Примечание: Важно отметить, что версия macOS, на которой вы используете 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 может быть использована для поиска конкретного инструмента в toolchain.

$ 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 использует технику слабой компоновки (weak linking), которая позволяет компилировать приложение по отношению к заголовкам и библиотекам самого последнего платформенного SDK, при этом позволяя размещать ваше приложение на версиях macOS, более ранних, чем версия SDK. При запуске двоичного файла на macOS версии ниже, чем версия SDK, Qt проверяет в runtime, доступно ли платформа функция, прежде чем её использовать.

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

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

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.13

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

Компилируя всегда с использованием последнего доступного платформенного 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 не полностью взаимодействует со средой разработки (например, плагины для установки файла «mocable» из пользовательского интерфейса Xcode).

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

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

CONFIG -= app_bundle

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

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

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

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

Примечание: Для продажи приложений в Mac App Store действуют особые правила. Для успешной проверки приложения должно проверить наличие действительного квитанции перед выполнением любого кода. Так как это механизм защиты от копирования, следует принимать меры, чтобы избежать распространённых схем и замаскировать код, проверяющий квитанцию, насколько это возможно. Поэтому автоматизация этим Qt невозможна, и требуется написанный специально для приложения платформенно-специфический код. Дополнительную информацию можно найти в документации Apple.

Проблемы с macOS

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

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

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

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

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

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

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

Spec-Zone.ru

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