Spec-Zone.ru › Qt 5.14

Qt для macOS

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

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

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

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

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

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

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

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

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

Qt выражает целевую платформу через переменную QMAKE_MACOSX_DEPLOYMENT_TARGET qmake, значение которой задаётся по умолчанию в 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 не полностью взаимодействует со средой разработки (например, плагины для задания файла "mocable" из интерфейса 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 стремится соблюдать правила песочницы Mac 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-5.14/macos.html

Spec-Zone.ru

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