Qt pro файл linux

Создание файлов проектов

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

Элементы файла проекта

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

В следующих разделах описаны различные типы элементов,используемых в файлах проекта.

Variables

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

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

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

Следующий фрагмент иллюстрирует,как списки значений присваиваются переменным:

HEADERS = mainwindow.h paintwidget.h

Список значений в переменной расширяется следующим образом:

SOURCES = main.cpp mainwindow.cpp \ paintwidget.cpp CONFIG += console

Примечание . Первое присвоение включает только значения, указанные в той же строке, что и переменная HEADERS . Второе присвоение разбивает значения в переменной SOURCES по строкам с помощью обратной косой черты (\).

CONFIG переменная другая специальная переменная , которая QMake использует при генерации Makefile. Это обсуждается в Общей конфигурации . В приведенном выше фрагменте console добавлена ​​в список существующих значений, содержащихся в CONFIG .

В следующей таблице перечислены некоторые часто используемые переменные и описано их содержимое. Полный список переменных и их описания см . В разделе « Переменные» .

Variable Contents
CONFIG Общие параметры конфигурации проекта.
DESTDIR Каталог,в который будет помещен исполняемый или двоичный файл.
FORMS Список файлов пользовательского интерфейса для обработки компилятором пользовательского интерфейса (uic) .
HEADERS Список имен файлов заголовочных (.h)файлов,используемых при сборке проекта.
QT Список модулей Qt,используемых в проекте.
RESOURCES Список файлов ресурсов (.qrc), которые будут включены в окончательный проект. Дополнительную информацию об этих файлах смотрите в Системе ресурсов Qt .
SOURCES Список файлов с исходным кодом для использования при сборке проекта.
TEMPLATE Шаблон для использования в проекте.Это определяет,будет ли на выходе процесс сборки приложением,библиотекой или плагином.
Читайте также:  Acronis media builder linux

Содержимое переменной можно прочитать, добавив к имени переменной $$ . Это можно использовать для присвоения содержимого одной переменной другой:

Оператор $$ широко используется со встроенными функциями, которые работают со строками и списками значений. Для получения дополнительной информации см. Qmake Language .

Whitespace

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

Текст в кавычках рассматривается как отдельный элемент в списке значений, содержащихся в переменной. Аналогичный подход используется для работы с путями, содержащими пробелы, особенно при определении переменных INCLUDEPATH и LIBS для платформы Windows:

win32:INCLUDEPATH += "C:/mylibs/extra headers" unix:INCLUDEPATH += "/home/user/extra headers"

Comments

Вы можете добавлять комментарии к файлам проекта. Комментарии начинаются с символа # и продолжаются до конца той же строки. Например:

# Комментарии обычно начинаются в начале строки, но они # также может следовать за другим контентом в той же строке.

Чтобы включить символ # в назначения переменных, необходимо использовать содержимое встроенной переменной LITERAL_HASH .

Встроенные функции и управляющий поток

qmake предоставляет ряд встроенных функций, позволяющих обрабатывать содержимое переменных. Наиболее часто используемой функцией в простых файлах проекта является функция include (), которая принимает имя файла в качестве аргумента. Содержимое данного файла включается в файл проекта в том месте, где используется функция include . Функция include обычно используется для включения других файлов проекта:

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

Назначения внутри фигурных скобок выполняются только в том случае, если условие истинно. В этом случае должна быть установлена ​​опция win32 CONFIG . В Windows это происходит автоматически. Открывающая скобка должна стоять на той же линии, что и условие.

Более сложные операции с переменными, которые обычно требуют циклов, предоставляются встроенными функциями, такими как find () , unique () и count () . Эти и многие другие функции предназначены для управления строками и путями, поддержки ввода данных пользователем и вызова внешних инструментов. Для получения дополнительной информации об использовании функций см. Qmake Language . Списки всех функций и их описания см. В разделах «Заменить функции» и « Тестовые функции» .

Project Templates

Переменная TEMPLATE используется для определения типа проекта, который будет построен. Если это не объявлено в файле проекта, qmake предполагает, что приложение должно быть собрано, и сгенерирует соответствующий Makefile (или эквивалентный файл) для этой цели.

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

Template qmake Output
app (default) Makefile для создания приложения.
lib Строить библиотеку.
aux Ничего не строить.Используйте это,если для создания цели не нужно вызывать компилятор,например,потому что ваш проект написан на интерпретируемом языке.

Примечание. Этот тип шаблона доступен только для генераторов на основе Makefile. В частности, он не будет работать с генераторами vcxproj и Xcode.

См. Раздел Создание общих типов проектов для получения советов по написанию файлов проекта для проектов, использующих шаблоны app и lib .

Когда subdirs используется шаблон, QMAKE создает файл сборки для проверки каждого подкаталога, обрабатывать любой файл проекта он находит там, и запустить платформы make инструмент на вновь созданного файла сборки. SUBDIRS переменный используются , чтобы содержать список всех подкаталогов, подлежащую обработке.

General Configuration

CONFIG переменная определяет параметры и характеристики , что проект должен быть настроен.

Проект может быть встроен release mode or debug режим, или оба. Если указаны отладка и выпуск, вступает в силу последний. Если вы укажете опцию debug_and_release для сборки как отладочной, так и выпускной версии проекта, Makefile, который генерирует qmake, включает правило, которое строит обе версии. Это можно вызвать следующим образом:

Добавление параметра build_all в переменную CONFIG делает это правило используемым по умолчанию при сборке проекта.

Примечание. Каждый из параметров, указанных в переменной CONFIG , также может использоваться как условие области действия. Вы можете проверить наличие определенных параметров конфигурации с помощью встроенной функции CONFIG () . Например, следующие строки показывают функцию как условие в области видимости, чтобы проверить, используется ли только опция opengl :

CONFIG(opengl) < message(Building with OpenGL support.) > else < message(OpenGL support is not available.) >

Это позволяет определять различные конфигурации для сборок release и debug . Для получения дополнительной информации см. Использование областей .

Следующие опции определяют тип строящегося проекта.

Примечание. Некоторые из этих параметров действуют только при использовании на соответствующей платформе.

Option Description
qt Проект представляет собой приложение Qt и должен связываться с библиотекой Qt. Вы можете использовать переменную QT для управления любыми дополнительными модулями Qt, которые требуются вашему приложению. Это значение добавляется по умолчанию, но вы можете удалить его, чтобы использовать qmake для проекта, отличного от Qt.
x11 Проект является приложением или библиотекой X11.Это значение не требуется,если цель использует Qt.

Шаблоны проектов приложений и библиотек предоставляют более специализированные параметры конфигурации для точной настройки процесса сборки. Параметры подробно описаны в разделе Создание общих типов проектов .

Например, если ваше приложение использует библиотеку Qt и вы хотите построить его в режиме debug , файл вашего проекта будет содержать следующую строку:

Примечание: вы должны использовать «+ =», а не «=», иначе qmake не сможет использовать конфигурацию Qt для определения настроек, необходимых для вашего проекта.

Декларирование библиотек Qt

Если переменная CONFIG содержит значение qt , поддержка qmake для приложений Qt включена. Это позволяет точно настроить, какие из модулей Qt используются вашим приложением. Это достигается с помощью переменной QT , которую можно использовать для объявления необходимых модулей расширения. Например, мы можем включить XML и сетевые модули следующим образом:

Примечание. QT по умолчанию включает модули core и gui , поэтому приведенное выше объявление adds сеть и XML-модули к этому списку по умолчанию.Следующее назначение omits модули по умолчанию,и будут приводить к ошибкам при компиляции исходного кода приложения:

QT = network xml # При этом будут опущены модули core и gui.

Если вы хотите построить проект without gui модуля, необходимо исключить его с помощью оператора «- =» оператора. По умолчанию QT содержит как core , так и gui , поэтому следующая строка приведет к созданию минимального проекта Qt:

QT -= gui # Используется только основной модуль.

Список модулей Qt, которые можно добавить в переменную QT ,см.в разделеQT .

Configuration Features

qmake можно настроить с помощью дополнительных функций конфигурации, которые указаны в файлах функций (.prf). Эти дополнительные функции часто обеспечивают поддержку настраиваемых инструментов, которые используются в процессе сборки. Чтобы добавить функцию в процесс сборки, добавьте имя функции (основу имени файла функции) в переменную CONFIG .

Например, qmake может настроить процесс сборки для использования преимуществ внешних библиотек, поддерживаемых pkg-config , таких как библиотеки D-Bus и ogg, с помощью следующих строк:

CONFIG += link_pkgconfig PKGCONFIG += ogg dbus-1

Дополнительные сведения о добавлении функций см. В разделе Добавление новых функций конфигурации .

Декларирование других библиотек

Если вы используете другие библиотеки в вашем проекте в дополнение к тем,которые поставляются с Qt,вам нужно указать их в вашем файле проекта.

Пути, по которым qmake ищет библиотеки, и конкретные библиотеки для компоновки могут быть добавлены в список значений в переменной LIBS . Вы можете указать пути к библиотекам или использовать нотацию в стиле Unix для указания библиотек и путей.

Например,в следующих строках показано,как можно указать библиотеку:

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

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

INCLUDEPATH = c:/msdev/include d:/stl/include
Qt 6.2

Предкомпилированные заголовки (PCH)-это функция производительности,поддерживаемая некоторыми компиляторами для стабильного тела кода и сохранения состояния в двоичном файле.

В справочных разделах подробно описаны переменные и функции,доступные для использования в файлах проекта qmake.

Поведение qmake может быть настроено при его запуске путем указания различных опций командной строки.

Источник

Оцените статью
Adblock
detector