Spec-Zone.ru › Qt

Qt для macOS

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

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

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

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

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

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

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

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

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

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

После установки выбор установки 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 определяет целевую версию с помощью переменных CMAKE_OSX_DEPLOYMENT_TARGET или QMAKE_MACOSX_DEPLOYMENT_TARGET, которые имеют значение по умолчанию, установленное Qt. Изменять это значение по умолчанию нужно только в том случае, если ваш код использует API macOS, доступные только в определенной версии, более поздней, чем значение по умолчанию Qt. Например, с CMake:

set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15")

или с qmake:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.15

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

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

Отключение изменений поведения macOS

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

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

Компиляция с более старой SDK — это крайняя мера и должна применяться только в том случае, если у вашего приложения нет других способов обойти проблему.

Архитектуры

По умолчанию Qt будет компилироваться под архитектуру вашей машины разработки — либо x86_64, либо arm64, если вы используете Mac с чипом Apple Silicon.

Чтобы скомпилировать для других архитектур, вы можете использовать переменные CMAKE_OSX_ARCHITECTURES и QMAKE_APPLE_DEVICE_ARCHS в файлах проекта или в командной строке. Это позволяет вам как кросс-компилировать в другую архитектуру, так и создавать универсальные (многоархитектурные) двоичные файлы. Например, чтобы скомпилировать ваше приложение для x86_64 и arm64 с помощью CMake:

cmake ~/src/myapp -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"

или с qmake:

qmake ~/src/myapp QMAKE_APPLE_DEVICE_ARCHS="x86_64 arm64"

При указании архитектур в файле проекта их не следует заключать в кавычки, например:

TEMPLATE = app
SOURCES = main.cpp
QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64

Генерация файлов проекта Xcode

По умолчанию CMake и qmake генерируют файлы проекта в формате Makefile. Если вы предпочитаете компилировать и отлаживать приложение изнутри Xcode, вы можете запросить генерацию файла проекта Xcode вместо этого:

cmake ~/src/myapp -GXcode

или с qmake:

qmake ~/src/myapp -spec macx-xcode

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

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

Чтобы скомпилировать приложение в виде пакета приложения с CMake, установите свойство MACOSX_BUNDLE для целевого исполняемого файла. С qmake пакеты — это значение по умолчанию. Установите CONFIG -= app_bundle в файле проекта (.pro) для отключения этого.

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

Приложения также могут распространяться через Mac App Store. macdeployqt (bin/macdeployqt) может использоваться как отправная точка для развертывания в App Store. Чтобы гарантировать соответствие Qt правилам песочницы App Store, Qt необходимо настроить с аргументом -feature-appstore-compliant.

Подробную информацию о развертывании на macOS см. в 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.2/macos.html

Spec-Zone.ru

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