Заметки о платформе
Многие кроссплатформенные проекты можно обработать с помощью базовых функций конфигурации qmake. Однако на некоторых платформах иногда полезно или даже необходимо использовать платформенно-специфичные функции. qmake знает о многих из этих функций, к которым можно получить доступ через определённые переменные, которые действуют только на тех платформах, где они актуальны.
macOS, iOS, tvOS и watchOS
Функции, специфичные для этих платформ, включают поддержку создания универсальных бинарных файлов, фреймворков и пакетов.
Пакеты исходного и двоичного кода
Версия qmake, поставляемая в пакетах исходного кода, настроена немного иначе, чем в пакетах двоичного кода, так как она использует другое описание функций. Где пакет исходного кода обычно использует спецификацию macx-g++, пакет двоичного кода обычно настраивается на использование спецификации macx-xcode.
Пользователи каждого пакета могут переопределить эту конфигурацию, вызвав qmake с опцией -spec (см. Запуск qmake для получения дополнительной информации). Например, для использования qmake из пакета двоичного кода для создания Makefile в каталоге проекта вызовите следующую команду:
qmake -spec macx-g++
Использование фреймворков
qmake может автоматически генерировать правила сборки для связывания с фреймворками в стандартном каталоге фреймворков на macOS, расположенном по адресу /Library/Frameworks/.
Для каталогов, отличных от стандартного каталога фреймворков, необходимо указать build-системе, и это достигается путём добавления опций линковщика к переменной 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. Способ связывания библиотек на стадии Frameworks & Libraries в системе сборки 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.9/qmake-platform-notes.html