Home · All Classes · Main Classes · Grouped Classes · Modules · Functions |
[Предыдущая: Использование 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), используемых для постройки проекта. |
QT | Qt-специфичные настройки конфигурации. |
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 для опций, необходимых для Вашего проекта.
Если вы, в переменной 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 |