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