Spec-Zone.ru › Qt 5.6

Создание общих типов проектов

В этом разделе описывается, как настроить файлы проектов qmake для трёх распространённых типов проектов, основанных на Qt: приложения, библиотеки и плагины. Хотя все типы проектов используют многие из тех же переменных, каждый из них использует специфичные для проекта переменные для настройки выходных файлов.

Платформенно-специфичные переменные здесь не описываются. Для получения дополнительной информации см. Qt для Windows — Развёртывание и Qt для macOS.

Создание приложения

Шаблон app сообщает qmake о генерации Makefile, который будет создавать приложение. С этим шаблоном тип приложения можно указать, добавив один из следующих параметров в определение переменной CONFIG:

Вариант Описание
windows Приложение — это приложение с графическим интерфейсом пользователя для Windows.
console app шаблон только: приложение — это консольное приложение для Windows.
testcase Приложение — это автоматизированный тест.

При использовании этого шаблона распознаются следующие системные переменные qmake. Вы должны использовать их в своём файле .pro для указания информации о вашем приложении. Дополнительные платформенно-зависимые системные переменные можно найти в Примечания по платформам.

  • HEADERS — список файлов заголовков для приложения.
  • SOURCES — список файлов исходного кода C++ для приложения.
  • FORMS — список файлов пользовательского интерфейса для приложения (созданных с помощью Qt Designer).
  • LEXSOURCES — список файлов исходного кода Lex для приложения.
  • YACCSOURCES — список файлов исходного кода Yacc для приложения.
  • TARGET — имя исполняемого файла для приложения. По умолчанию соответствует имени файла проекта. (Расширение, если таковое имеется, добавляется автоматически).
  • DESTDIR — каталог, в котором размещается целевой исполняемый файл.
  • DEFINES — список дополнительных директив препроцессора, необходимых для приложения.
  • INCLUDEPATH — список дополнительных путей включения, необходимых для приложения.
  • DEPENDPATH — путь поиска зависимостей для приложения.
  • VPATH — путь поиска предоставленных файлов.
  • DEF_FILE — только для Windows: файл .def, который нужно связать с приложением.

Вам нужно использовать только те системные переменные, для которых у вас есть значения. Например, если у вас нет дополнительных INCLUDEPATH, вам не нужно их указывать. qmake добавит необходимые значения по умолчанию. Пример файла проекта может выглядеть так:

TEMPLATE = app
DESTDIR  = c:/helloapp
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
DEFINES += USE_MY_STUFF
CONFIG  += release

Для элементов с единственным значением, например, шаблона или каталога назначения, мы используем «=»; но для многозначных элементов мы используем «+=» для добавления к существующим элементам этого типа. Использование «=» заменяет значение переменной новым значением. Например, если мы напишем DEFINES=USE_MY_STUFF, все остальные определения будут удалены.

Создание тестового кейса

Проект тестового кейса — это app проект, предназначенный для запуска как автоматизированного теста. Любой app может быть помечен как тестовый кейс, добавив значение testcase в переменную CONFIG.

Для проектов тестовых кейсов qmake вставит в сгенерированный Makefile целевой объект check. Этот целевой объект запустит приложение. Тест считается пройденным, если он завершается с кодом выхода, равным нулю.

Целевой объект check автоматически рекурсивно проходит по проектам SUBDIRS. Это означает, что можно выполнить команду make check изнутри проекта SUBDIRS, чтобы запустить весь набор тестов.

Запуск целевого объекта check можно настроить с помощью определённых переменных Makefile. Эти переменные:

Переменная Описание
TESTRUNNER Команда или фрагмент оболочки, добавляемый перед каждой командой теста. Пример использования — сценарий «timeout», который прервёт тест, если он не завершится в течение заданного времени.
TESTARGS Дополнительные аргументы, добавляемые к каждой команде теста. Например, может быть полезно передавать дополнительные аргументы для установки выходного файла и формата из теста (например, параметр -o filename,format, поддерживаемый QTestLib).

Примечание: Переменные должны быть установлены при вызове инструмента make, а не в файле .pro. Большинство инструментов make поддерживают установку переменных Makefile непосредственно в командной строке:

# Run tests through test-wrapper and use xunitxml output format.
# In this example, test-wrapper is a fictional wrapper script which terminates
# a test if it does not complete within the amount of seconds set by "--timeout".
# The "-o result.xml,xunitxml" options are interpreted by QTestLib.
make check TESTRUNNER="test-wrapper --timeout 120" TESTARGS="-o result.xml,xunitxml"

Проекты тестовых кейсов можно дополнительно настроить с помощью следующих CONFIG параметров:

Вариант Описание
insignificant_test Код выхода теста будет проигнорирован во время make check.

Тестовые кейсы часто пишутся с использованием QTest или TestCase, но это не является требованием для использования CONFIG+=testcase и make check. Единственное основное требование заключается в том, чтобы программа теста завершалась с кодом выхода 0 при успехе и ненулевым кодом выхода при ошибке.

Создание библиотеки

Шаблон lib сообщает qmake о генерации Makefile, который будет создавать библиотеку. При использовании этого шаблона поддерживается переменная VERSION, помимо системных переменных, которые поддерживает шаблон app. Используйте переменные в своём файле .pro для указания информации о библиотеке.

При использовании шаблона lib следующие параметры могут быть добавлены в переменную CONFIG для определения типа создаваемой библиотеки:

Вариант Описание
dll Библиотека — это динамически подключаемая библиотека (dll).
staticlib Библиотека — это статическая библиотека.
plugin Библиотека — это плагин.

Следующий параметр также может быть определён для предоставления дополнительной информации о библиотеке.

  • VERSION — номер версии целевой библиотеки. Например, 2.3.1.

Имя целевого файла для библиотеки зависит от платформы. Например, в X11, macOS и iOS имя библиотеки будет иметь префикс lib. В Windows префикс к имени файла не добавляется.

Создание плагина

Плагины создаются с использованием шаблона lib, как описано в предыдущем разделе. Это сообщает qmake о генерации Makefile для проекта, который будет создавать плагин в подходящей форме для каждой платформы, обычно в виде библиотеки. Как и в обычных библиотеках, переменная VERSION используется для указания информации о плагине.

  • VERSION — номер версии целевой библиотеки. Например, 2.3.1.

Создание плагина Qt Designer

Плагины Qt Designer создаются с использованием набора специфических параметров конфигурации, которые зависят от способа конфигурации Qt для вашей системы. Для удобства эти параметры можно включить, добавив designer в переменную QT. Например:

QT          += widgets designer

См. Примеры Qt Designer для получения дополнительных примеров проектов на основе плагинов.

Создание и установка в режимах отладки и релиз

Иногда необходимо создать проект как в режиме отладки, так и в режиме релиза. Хотя переменная CONFIG может содержать как debug, так и release параметры, применяется только последний указанный параметр.

Создание в обоих режимах

Чтобы включить создание проекта в обоих режимах, необходимо добавить параметр debug_and_release в переменную CONFIG.

CONFIG += debug_and_release

CONFIG(debug, debug|release) {
    TARGET = debug_binary
} else {
    TARGET = release_binary
}

Область в приведенном выше фрагменте кода изменяет целевой объект сборки в каждом режиме, чтобы гарантировать, что результирующие целевые объекты имеют разные имена. Предоставление разных имён для целевых объектов гарантирует, что один из них не перезапишет другой.

При обработке файла проекта qmake сгенерирует правило Makefile, позволяющее создавать проект в обоих режимах. Это можно вызвать следующим образом:

make all

Параметр build_all может быть добавлен в переменную CONFIG в файле проекта, чтобы гарантировать, что проект по умолчанию будет создаваться в обоих режимах:

CONFIG += build_all

Это позволяет обработать Makefile с помощью правила по умолчанию:

make

Установка в обоих режимах

Параметр build_all также гарантирует, что обе версии целевого объекта будут установлены при вызове правила установки:

make install

Можно настроить имена целевых объектов сборки в зависимости от целевой платформы. Например, библиотека или плагин могут иметь другое имя в Windows по сравнению с платформами Unix:

CONFIG(debug, debug|release) {
    mac: TARGET = $$join(TARGET,,,_debug)
    win32: TARGET = $$join(TARGET,,d)
}

Поведение по умолчанию в приведенном выше фрагменте кода заключается в изменении имени целевого объекта сборки при создании в режиме отладки. В область можно добавить условие else, чтобы сделать то же самое для режима релиза. Без изменения, имя целевого объекта останется неизменным.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qmake-common-projects.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API