Spec-Zone.ru › Qt 5.6

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

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

macOS и iOS

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

Пакеты исходного кода и бинарных файлов

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

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

qmake -spec macx-g++

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

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

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

QMAKE_LFLAGS += -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.

Как правило, скрипт определения ресурсов (.rc-файл) компилируется в файл ресурсов Windows. В рамках инструментальной цепочки Microsoft инструмент RC генерирует файл .res, который можно связать с EXE или DLL с помощью Microsoft linker. Инструментальная цепочка MinGW использует инструмент windres для генерации файла .o, который можно связать с MinGW linker с 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 > Импортировать из файла .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/archives/qt-5.6/qmake-platform-notes.html

Spec-Zone.ru

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