Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

[Предыдущая: Использование qmake] [Содержание] [Следующая: Запуск qmake]

Проектные Файлы qmake

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

Элементы Проектного Файла

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

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

Переменные

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

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

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

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

    HEADERS = mainwindow.h paintwidget.h

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

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

    SOURCES = main.cpp mainwindow.cpp \
              paintwidget.h
    CONFIG += qt

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

В следующем списке приведены переменные, которые qmake распознает и описание информацию, которую они должны содержать.

ПеременнаяСодержимое
CONFIGНастройки общей конфигурации проекта.
DESTDIRДиректория, в которую будет помещен исполняемый или двоичный файл.
FORMSСписок файлов форм (.ui), обрабатываемых uic.
HEADERSСписок имен заголовочных файлов (.h), используемых для постройки проекта.
QTQt-специфичные настройки конфигурации.
RESOURCESСписок файлов ресурсов (.rc), которые должны быть включены в проект. Для получения более подробной информации об этих файлах см. Система Ресурсов Qt.
SOURCESСписок файлов реализации, используемых для постройки проекта.
TEMPLATEШаблон, используемый для постройки проекта. Определяет, будет ли построенный проект приложением, библиотекой или плагином.

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

    TEMP_SOURCES = $$SOURCES

Оператор $$ интенсивно используется встраиваемыми функциями, работающими со строками и списками значений. Они описаны в главе Профессиональное Использование qmake.

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

    DEST = "Program Files"

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

Комментарии

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

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

Если необходимо в значение какой-либо переменной включить символ #, используют внутреннюю переменную LITERAL_HASH. Для получения более подробной информации, см. описание переменных.

Встроенные Функции и Поток Управления

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

    include(other.pro)

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

    win32 {
        SOURCES += paintwidget_win.cpp
    }

Инструкции внутри выполняются только в случае, если выражение условия возвращает true. В данном случае должна быть установлена специальная переменная win32; это автоматически делается в Windows, а в других системах это можно сделать запустив qmake с опцией командной строки -win32 (для получения более подробной информации см. Запуск qmake).

Простые циклы для перебора значений списков создаются с использованием встроенной функции for. Следующий код добавляет директории в переменную SUBDIRS, но только если такие директории существуют:

    EXTRAS = handlers tests docs
    for(dir, EXTRAS) {
        exists($$dir) {
            SUBDIRS += $$dir
        }
    }

Более сложные операции, обычно требующие циклов, над переменными реализованы с помощью встроенных функций, таких как find, unique и count. Эти и многие другие функции обеспечивают управление строками и путями, поддерживают пользовательский ввод и вызов внешних инструментов. Список доступных функций может быть найден в главе Профессиональное Использование qmake данного руководства.

Шаблоны Проекта

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

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

TemplateОписание продукцииqmake
app (по умолчанию)Создается Make-файл для постройки приложения.
libСоздается Make-файл для постройки библиотеки.
subdirsСоздается Make-файл, который попадет во все указанные директории и запустит qmake для всех найденных проектных файлов.
vcappСоздается проектный файл Visual Studio для постройки проекта.
vclibСоздается проектный файл Visual Studio для постройки библиотеки.

Для получения советов относительно написания проектных файлов для проектов, использующих шаблоны app и lib см. qmake Tutorial for advice on writing project files for projects that use the app and lib templates.

При использовании шаблона subdirs, qmake генерирует Make-файл для просмотра каждой заданной поддиректории, обрабатывает любой, найденный там проектный файл и запускает платформеннозависимый инструмент make для недавно созданного Make-файла.

Единственная переменная, предназначена для данного шаблона - это переменная SUBDIRS. Эта переменная содержит список всех поддиректорий, содержащих обрабатываетмые проектные файлы. Важно, чтобы проектный файл в каждой поддиректории, чтобы qmake мог его найти, имел то-же имя, что и поддиректория. Например, если поддиректория называется myapp, то проектный файл, находящийся в этой директории, должен называться myapp.pro.

Общее Конфигурирование

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

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

ОпцияОписание
releaseПроект строится в режиме полноценного окончательного варианта. Игнорируется, если также определена опция debug.
debugПроект строится в режиме отладки.
warn_onКомпилятор должен вывести, насколько возможно, много сообщений. Игнорируется, если также определена опция warn_off.
warn_offКомпилятор должен вывести, насколько возможно, мало сообщений.

Обратите внимание, что любая из опций, задаваемых в переменной CONFIG может также использоваться в качестве условий в проектном файле. Это позволяет задавать различные конфигурации для постройки release и debug, и подробно описано в разделе Scopes главы Профессиональное Использование данного руководства.

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

    CONFIG(debug, debug|release) {
        message(Building in debug mode.)
    } else {
        message(Building in release mode. Ignoring debug if it is available.)
    }

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

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

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

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

    CONFIG += qt thread debug

Обратите внимание, что следует использовать "+=", not "=". В противном случае qmake не сможет использовать конфигурацию Qt для опций, необходимых для Вашего проекта.

Декларация Библиотек Qt

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

    CONFIG += qt
    QT += network xml

Обратите внимание, что переменная QT по умолчанию включает модули ядра и GUI, так что вышеприведенная декларация добавляет модули сети и XML к списку модулей по умолчанию. Следующее присваивание удаляет модули по умолчанию и приведет к ошибкам при компиляции исходного кода:

    QT = network xml # This will omit the core and GUI modules.

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

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

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

ОпцияОсобенности
core (включается по умолчанию)модуль QtCore
gui (включается по умолчанию)модуль QtGui
networkмодуль QtNetwork
openglмодуль QtOpenGL
sqlмодуль QtSql
svgмодуль QtSvg
xmlмодуль QtXml
qt3supportмодуль Qt3Support

Особенности Конфигурирования

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

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

        CONFIG += link_pkgconfig
        PKGCONFIG += ogg dbus-1

Более подробная информация об особенностях конфигурирования может быть найдена в разделе Добавление Новых Особенностей Конфигурации главы Профессиональное Использование qmake.

[Предыдущая: Использование qmake] [Содержание] [Следующая: Запуск qmake]


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz