Spec-Zone.ru › Qt 6.0

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

В этом разделе описывается, как настроить файлы проекта 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 вставит целевой check в сгенерированный Makefile. Этот целевой объект запустит приложение. Тест считается пройденным, если он завершается с кодом выхода, равным нулю.

Целевой объект 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/qt-6.0/qmake-common-projects.html

Spec-Zone.ru

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