Компонент содержит набор вспомогательных средств, упрощающих ведение проектов с помощью qmake.
Использование фитч возможно в любом проекте.
Подключить фитчи в виде подмодуля в проект в папку project/qmake/features можно с помощью команды:
git submodule add --name qmake-features [url] project/qmake/featuresМожно использовать любой другой путь вместо project/qmake/features, если требуется другое размещение.
Использование фитч в проектах возможно с помощью явного указания их размещения в переменной QMAKEFEATURES
QMAKEFEATURES = .../project/qmake/featuresи указания необходимых фитч в переменной CONFIG
CONFIG *= \
first_feature \
second_feature \либо явной загрузкой фитчи с помощью команды load
load( first_feature ) # загрузка без проверки
!load( second_feature ) : error( Can not find feature \"second_feature\" ) # загрузка с проверкойМеханизм фитч рекомендуется использовать совместно с разделением проектов на Комплексы и Компоненты
- Комплекс - это совокупность компонентов, объединённых вместе в единое законченное целое.
- Компонент - это составная часть комплекса.
Компоненты могут иметь зависимости друг от друга, поэтому сами по себе компоненты не используются. Они всегда являются частью какого-либо комплекса, который должен содержать все необходимые для сборки компоненты.
Рекомендуется хранить все компоненты и комплексы в отдельных репозиториях, и включать Компоненты в общий Комплекс с помощью механизма подмодулей. В рамках единого комплекса инструмент qmake для всех компонентов позволяет задать общую конфигурацию в файле .qmake.conf. Содержимое файла .qmake.conf подгружается ко всем проектным файлам уровнями ниже. В проектные файлы такого же уроня и выше .qmake.conf не подгружается.
Таким образом для каждого Комплекса имеется возможность в файле .qmake.conf указать свои собственные особенности сборки, не затрагивая другие Комплексы и сами Компоненты. Содержимое файла .qmake.conf может выглядеть так
QMAKEFEATURES = $${PWD}/project/qmake/features
CONFIG *= \
first_feature \
second_feature \Проектный файл Комплекса - это обычный проект qmake с подпроектами, например:
TEMPLATE = subdirs
CONFIG = ordered
SUBDIRS *= \
first_component \
second_component \Компонент, предполагающий использование данного набора фитч должен быть оформлен определенным образом, и должен содержать
- <module>.pro - проектный файл
- <module>.prf - файл зависимостей от данного Компонента
Файлы могут располагаться в любом месте, независимо друг от друга и даже могут не входить в состав самого Компонента. То есть, например, для 3rdparty компонентов можно сформировать эти файлы непосредственно в Комплексе.
Проектный файл <module>.pro содержит включение файлов исходных кодов и определения, необходимые для сборки Компонента.
# Тип сборки
TEMPLATE = lib
# Включение исходных файлов
!load( include_files ) : error( Can not find feature \"include_files\" )
includeFiles( $${PWD}/../../src )Файл зависимостей <module>.prf содержит определения, необходимые для сборки Компонентов зависимых от этого.
LIBS *= -l<module>
INCLUDEPATH *= ...
DEPENDPATH *= ...
DEFINES *= ...
QT *= core # зависимости от модулей Qt
DEPENDS = \ # зависимости от других Компонентов
first_module \
second_module \Правила использования фитч и общего файла конфигурации в Qt4 отличается от правил Qt5.
- Вместо файла общей конфигурации может быть использован файл .qmake.cache, который должен располагаться в папке сборки.
- Для использования фитч, они должны располагаться в подпапке features папки сборки.
Включение в проектный файл комплекса проектный файл pro/.qmake.qt4.pro делает возможным использование функциональности фитч с помощью инструментов Qt4. Проектный файл pro/.qmake.qt4.pro должен быть включен первым по счету в переменную SUBDIRS в поектном файле комплекса.
Каждая фитча сопровождается документацией в виде одноименного <feature>.md файла в папке doc/<locale>.