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