Заметки по платформам
Многие кроссплатформенные проекты могут быть обработаны базовыми функциями конфигурации 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 из файла проекта 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 Windows EXE или DLL является одновременное использование обоих методов: подключение независимых от платформы ресурсов через систему ресурсов 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, 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-5.14/qmake-platform-notes.html