Spec-Zone.ru › Qt 6.1

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 содержит как инструментарий (компилятор, компоновщик и другие инструменты), так и SDK платформы macOS (заголовочные файлы и библиотеки). Вместе они определяют способ сборки вашего приложения.

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

Xcode можно скачать с веб-сайта разработчиков Apple https://developer.apple.com/download/ (включая более ранние версии 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 использует технику «слабой связи» (weak linking), которая позволяет вам собирать ваше приложение с использованием заголовочных файлов и библиотек последнего SDK платформы, при этом позволяя развертывать ваше приложение на версиях macOS, более ранних, чем версия SDK. Когда двоичный файл запускается на версии macOS ниже, чем версия SDK, с которой он был собран, Qt будет проверять во время выполнения, доступна ли платформа функция, прежде чем использовать её.

Теоретически это позволит запустить ваше приложение на каждой версии macOS, но по практическим (и техническим) причинам существует нижний предел этого диапазона, известный как «минимальная поддерживаемая версия» (deployment target) вашего приложения. Если двоичный файл запускается на версии 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 https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Introduction/Introduction.html.

Отключение изменений поведения 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 стремится соблюдать правила песочницы 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.1/macos.html

Spec-Zone.ru

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