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