Spec-Zone.ru › Qt

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

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

qmake -spec macx-xcode project.pro

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

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

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

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

В настоящее время невозможно задавать файлы в настройках конфигурации Xcode из файла проекта Xcode, сгенерированного qmake. Способ подключения библиотек на этапе «Фреймворки и библиотеки» в системе сборки 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, который можно связать с линковщиком Microsoft для EXE или DLL. Инструментарий 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, 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.2/qmake-platform-notes.html

Spec-Zone.ru

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