Spec-Zone.ru › Qt 5.13

Заметки по платформам

Многие кроссплатформенные проекты можно обрабатывать с помощью базовых функций конфигурации qmake. Однако на некоторых платформах иногда бывает полезно или даже необходимо использовать платформенно-специфические возможности. qmake знает о многих таких возможностях, к которым можно получить доступ через определённые переменные, которые действуют только на платформах, где они актуальны.

macOS, iOS, tvOS и watchOS

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

Исходные и бинарные пакеты

Версия qmake, поставляемая в исходных пакетах, настроена немного иначе, чем в бинарных пакетах, так как использует другое определение функций. Если исходный пакет обычно использует спецификацию macx-g++, то бинарный пакет обычно настроен на использование спецификации macx-xcode.

Пользователи каждого пакета могут переопределить эту конфигурацию, вызвав qmake с опцией -spec (см. Запуск qmake для получения дополнительной информации). Например, чтобы использовать qmake из бинарного пакета для создания Makefile в каталоге проекта, вызовите следующую команду:

qmake -spec macx-g++

Использование фреймворков

qmake может автоматически генерировать правила построения для связывания с фреймворками в стандартном каталоге фреймворков на macOS, расположенном по адресу /Library/Frameworks/.

Для каталогов, отличных от стандартного каталога фреймворков, необходимо указать параметры компоновщику, и это достигается путём добавления параметров компоновщика к переменной LIBS, как показано в следующем примере:

LIBS += -F/path/to/framework/directory/

Сам фреймворк связывается путём добавления параметров -framework и имени фреймворка к переменной LIBS:

LIBS += -framework TheFramework

Создание фреймворков

Любой проект библиотеки можно настроить таким образом, чтобы результирующий файл библиотеки помещался в фреймворк, готовый к развертыванию. Для этого настройте проект для использования lib шаблона и добавьте опцию lib_bundle к переменной CONFIG:

TEMPLATE = lib
CONFIG += lib_bundle

Данные, связанные с библиотекой, указываются с помощью переменной QMAKE_BUNDLE_DATA. Она содержит элементы, которые будут установлены с пакетом библиотеки, и часто используется для указания набора заголовочных файлов, как в следующем примере:

FRAMEWORK_HEADERS.version = Versions
FRAMEWORK_HEADERS.files = path/to/header_one.h path/to/header_two.h
FRAMEWORK_HEADERS.path = Headers
QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS

Вы используете переменную FRAMEWORK_HEADERS для указания заголовочных файлов, необходимых для конкретного фреймворка. Добавление её к переменной QMAKE_BUNDLE_DATA обеспечивает добавление информации об этих заголовочных файлах в набор ресурсов, которые будут установлены с пакетом библиотеки. Кроме того, имя фреймворка и версия задаются переменными QMAKE_FRAMEWORK_BUNDLE_NAME и QMAKE_FRAMEWORK_VERSION. По умолчанию значения, используемые для этих переменных, извлекаются из переменных TARGET и VERSION.

Дополнительную информацию о развертывании приложений и библиотек см. в Qt для macOS - Развертывание.

Создание и перемещение проектов Xcode

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

qmake -spec macx-xcode project.pro

Примечание: Если проект позже перемещается на диске, необходимо снова запустить qmake для обработки файла проекта и создания нового файла проекта Xcode.

Поддержка двух целей сборки одновременно

Реализация этого в настоящее время невозможна, потому что концепция активных конфигураций сборки в Xcode отличается от идеи целей сборки в qmake.

Параметры активных конфигураций сборки Xcode предназначены для изменения конфигураций Xcode, флагов компилятора и аналогичных параметров сборки. В отличие от Visual Studio, Xcode не позволяет выбирать определенные файлы библиотек в зависимости от того, выбрана конфигурация сборки отладки или релиз. Настройки qmake для отладки и релиза контролируют, какие файлы библиотек связываются с исполняемым файлом.

В настоящее время невозможно задать файлы в настройках конфигурации Xcode из сгенерированного qmake файла проекта Xcode. Способ связывания библиотек в фазе «Фреймворки и библиотеки» в системе сборки Xcode.

Кроме того, выбранная активная конфигурация сборки хранится в файле .pbxuser, который генерируется Xcode при первом открытии, а не создается qmake.

Windows

Особенности, специфичные для этой платформы, включают поддержку файлов ресурсов Windows (предоставленных или сгенерированных автоматически), создание файлов проектов Visual Studio и обработку файлов манифестов при развертывании приложений Qt, разработанных с помощью Visual Studio 2005 или более поздних версий.

Добавление файлов ресурсов Windows

Этот раздел описывает, как обработать файл ресурсов Windows с помощью qmake, чтобы он был связан с исполняемым файлом приложения (EXE) или динамической библиотекой (DLL). qmake может дополнительно сгенерировать файл ресурсов Windows с соответствующим содержимым.

Связанный файл ресурсов Windows может содержать множество элементов, к которым можно получить доступ из его EXE или DLL. Однако для доступа к связанным ресурсам независимо от платформы следует использовать систему ресурсов Qt. Но некоторые стандартные элементы связанного файла ресурсов Windows доступны самому Windows. Например, в проводнике Windows вкладке «Сведения» в свойствах файла заполняются элементами ресурсов. Кроме того, значок программы EXE считывается из этих элементов. Поэтому хорошей практикой для созданной в Qt Windows EXE или DLL является одновременное использование обеих техник: связывание независимых от платформы ресурсов с помощью системы ресурсов Qt и добавление специфичных для Windows ресурсов с помощью файла ресурсов Windows.

Обычно скрипт определения ресурсов (.rc-файл) компилируется в файл ресурсов Windows. В среде разработки Microsoft инструмент RC генерирует файл .res, который может быть связан с EXE или DLL с помощью компоновщика Microsoft. Инструментарий MinGW использует утилиту windres для генерации файла .o, который может быть связан с компоновщиком MinGW с EXE или DLL.

Дополнительная автоматическая генерация файла .rc с соответствующим содержимым qmake выполняется путем установки как минимум одной из системных переменных VERSION и RC_ICONS. Сгенерированный .rc-файл автоматически компилируется и связывается. Элементы, добавляемые в файл .rc, определяются системными переменными QMAKE_TARGET_COMPANY, QMAKE_TARGET_DESCRIPTION, QMAKE_TARGET_COPYRIGHT, QMAKE_TARGET_PRODUCT, RC_CODEPAGE, RC_ICONS, RC_LANG и VERSION.

Если этих элементов недостаточно, qmake имеет две системные переменные RC_FILE и RES_FILE, которые указывают непосредственно на внешне созданный .rc или .res файл. Установив одну из этих переменных, указанный файл связывается с EXE или DLL.

Примечание: Генерация файла .rc qmake блокируется, если установлены RC_FILE или RES_FILE. В этом случае qmake не вносит дальнейших изменений в данный файл .rc или файл .res или .o; переменные, относящиеся к генерации файла .rc, не оказывают никакого влияния.

Создание файлов проектов Visual Studio

Этот раздел описывает, как импортировать существующий проект qmake в Visual Studio. qmake может принять файл проекта и создать проект Visual Studio, содержащий всю необходимую информацию для среды разработки. Это достигается путем установки шаблона проекта qmake на vcapp (для проектов приложений) или vclib (для проектов библиотек).

Это также можно установить с помощью командной строки, например:

qmake -tp vc

Можно рекурсивно сгенерировать файлы .vcproj в подкаталогах и файл .sln в главном каталоге, набрав:

qmake -tp vc -r

Каждый раз, когда вы обновляете файл проекта, необходимо запустить qmake для генерации обновлённого проекта Visual Studio.

Примечание: Если вы используете плагин Visual Studio, выберите Qt > Import from .pro file для импорта файлов .pro.

Файлы манифестов Visual Studio

При развертывании приложений Qt, созданных с помощью Visual Studio 2005 или более поздних версий, убедитесь, что файл манифеста, созданный при связывании приложения, обрабатывается правильно. Для проектов, генерирующих DLL, это делается автоматически.

Удаление встраивания манифеста для исполняемых файлов приложений можно сделать с помощью следующего присвоения переменной CONFIG:

CONFIG -= embed_manifest_exe

Также встраивание манифеста для DLL можно удалить с помощью следующего присвоения переменной CONFIG.

CONFIG -= embed_manifest_dll

Это подробно описано в руководстве по развертыванию для Windows.

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

Spec-Zone.ru

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