Spec-Zone.ru › Qt 6.1

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

Многие кроссплатформенные проекты можно обрабатывать с помощью базовых функций конфигурации 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-созданных EXE или DLL в Windows рекомендуется использовать оба метода одновременно: подключать независимые от платформы ресурсы через систему ресурсов Qt и добавлять специфичные для Windows ресурсы через файл ресурсов Windows.

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

Необязательная автоматическая генерация подходящего заполненного файла .rc qmake вызывается установкой как минимум одной из системных переменных VERSION и RC_ICONS. Сгенерированный файл .rc автоматически компилируется и подключается. Элементы, которые добавляются в файл .rc, определяются системными переменными QMAKE_TARGET_COMPANY, QMAKE_TARGET_DESCRIPTION, QMAKE_TARGET_COPYRIGHT, QMAKE_TARGET_PRODUCT, QMAKE_TARGET_ORIGINAL_FILENAME, QMAKE_TARGET_INTERNALNAME, QMAKE_TARGET_COMMENTS, QMAKE_TARGET_TRADEMARKS, QMAKE_MANIFEST, 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 > Импортировать из файла .pro для импорта файлов .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-6.1/qmake-platform-notes.html

Spec-Zone.ru

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