[Предыдущая: Использование qmake] [Содержание] [Следующая: Запуск qmake] Файлы проекта 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 }
Присваивания внутри скобок выполняются только в том случае, если условие истинно. В данном случае, должна быть установлена специальная переменная win32; это происходит автоматически под Windows, но это так же может быть определено на других платформах, если запустить в командной строке qmake с опцией -win32 (для получения дополнительной информации смотрите Запуск qmake). Открывающая скобка обязательно должна находиться на той же строке, что и условие.
Простые циклы создаются с помощью перебора списка значений, используя встроенную функцию for. Следующий код добавляет каталоги в переменную SUBDIRS, но только в том случае, если они существуют:
EXTRAS = handlers tests docs for(dir, EXTRAS) { exists($$dir) { SUBDIRS += $$dir } }
Более сложные операции с переменными, которые обычно требуют циклы, предоставляются встроенными функциями такими, как find, unique и count. Эти и многие другие функции обеспечивают управление строками и путями, поддерживают пользовательский ввод и вызывают внешние инструменты. Список доступных функций можно найти в главе Продвинутое использование qmake этого руководства.
Переменная TEMPLATE используется для определения типа проекта, который будет собран. Если это не указано в файле проекта, qmake допускает, что это будет приложение, и создает для этой цели соответствующий файл сборки (или эквивалентный файл).
Доступные типы проектов и информация о выходных файлах, которые создает qmake, перечислены в следующей таблице:
Шаблон | Описание вывода qmake |
---|---|
app (по умолчанию) | Создает make-файл для сборки приложения. |
lib | Создает make-файл для сборки библиотеки. |
subdirs | Создает файл сборки, содержащий правила для подкаталогов, определенных в переменной SUBDIRS. Каждый подкаталог может содержать свой собственный файл проекта. |
vcapp | Создает файл проекта Visual Studio для сборки приложения. |
vclib | Создает файл проекта Visual Studio для сборки библиотеки. |
Смотрите Руководство по qmake для рекомендаций по написанию файлов проекта для проектов, которые используют шаблоны app и lib.
Когда используется шаблон subdirs, qmake создает файл сборки для проверки каждого подкаталога, обрабатывает каждый файл проекта, найденный в нем, и запускает инструмент сборки make на данной платформе для только что созданного файла сборки. Переменная SUBDIRS используется для хранения списка всех обрабатываемых подкаталогов.
Переменная CONFIG определяет параметры и возможности, которые должен использовать компилятор, и библиотеки, с которыми будет идти компоновка. Всё должно быть учтено в переменной CONFIG, но стоит обратить внимание, что следующие опции общеприняты для qmake.
Следующие опции управляют флагами компилятора, которые используются для сборки проекта:
Опция | Описание |
---|---|
release | Проект должен быть собран в режиме релиза. Эта опция игнорируется, если также определен режим debug. |
debug | Проект должен быть собран в режиме отладки. |
debug_and_release | Проект собирается в обоих режимах (отладки и релиза). |
build_all | Если установлено debug_and_release, проект собирается в обоих режимах (отладки и релиза) по умолчанию. |
ordered | Когда используется шаблон subdirs, эта опция определяет порядок, в котором будут обрабатываться подкаталоги. Последовательность будет такой, в какой подкаталоги занесли в переменную. |
warn_on | Компилятор должен выдать все возможные предупреждения. Эта опция игнорируется, если установлена опция warn_off. |
warn_off | Компилятор должен вывести как можно меньше предупреждений. |
Особенность опции debug_and_release заключается в том, что она позволяет собрать проект сразу в обеих версиях, отладки и релиза. В данном случае файл сборки, который qmake создает, включает правило, которое собирает обе версии, и это может быть вызвано следующим образом:
make all
Добавление опции build_all в переменную CONFIG делает это правило правилом по умолчанию при сборке проекта, и установка целевых сборок будет произведена, как для версии отладки, так и для версии релиза.
Заметьте, что каждая из этих опций, определенных в переменной CONFIG, может быть использована в качестве условия области видимости. Вы можете проверить наличие определенной опций конфигурации, используя встроенную функцию CONFIG(). Например, следующие строки показывают применение функции в условии области видимости для проверки, используется ли опция opengl:
CONFIG(opengl) { message(Building with OpenGL support.) } else { message(OpenGL support is not available.) }
Это позволяет определять различные конфигурации для версий релиза (release) и отладки (debug). Более подробное описание можно посмотреть в разделе Области видимости в главе Продвинутое использование qmake этого руководства.
Следующие опции определяют тип проекта для сборки. Заметьте, что некоторые из этих опций имеют смысл, когда применяются на соответствующей платформе. На других платформах они ни на что не влияют.
Опция | Описание |
---|---|
qt | Проект – приложение Qt и должно компоноваться с библиотекой Qt. Вы можете использовать переменную QT для управления всеми дополнительными модулями Qt, которые требуются вашему приложению. |
thread | Проект – многопоточное приложение. |
x11 | Проект – приложение или библиотека X11. |
Для тонкой настройки процесса сборки могут применяться более специализированные опции конфигурации, которые используются в шаблонах проекта приложения или библиотеки. Детально это описано в главе Общие проекты данного руководства.
Например, если ваше приложение использует библиотеку Qt и вы хотите, чтобы оно было собрано как многопоточное приложение в режиме отладки debug, ваш файл проекта должен будет содержать следующую строку:
CONFIG += qt thread debug
Заметьте, что вы должны использовать "+=",а не "=", или qmake не сможет использовать конфигурацию Qt для определения настроек, необходимых вашему проекту.
Если переменная CONFIG содержит значение qt, то qmake поддерживает приложения Qt. Это предоставляет возможность точно регулировать, какие модули Qt используются вашим приложением. Это достигается с помощью переменной QT, которая может использоваться для объявления требуемых дополнительных модулей. Например, нам доступны XML и сетевые модули следующим образом:
CONFIG += qt QT += network xml
Заметьте, что QT включает по умолчанию модули ядра core и gui, поэтому строки выше добавляют сетевые и XML модули к списку по умолчанию. Следующие присвоение не включает модули по умолчанию, и приведет к ошибкам, когда исходный код приложения будет компилироваться:
QT = network xml # не будут включены модули ядра и ГПИ.
Если вы хотите построить проект без модуля gui, вам необходимо исключить его с помощью оператора "-=". По умолчанию, QT содержит оба модуля, core и gui, поэтому результатом следующей строки будет минимальный проект Qt, который может быть собран:
QT -= gui # будет использоваться только модуль ядра.
Таблица ниже показывает опции, которые могут быть использованы с переменной QT и свойства, которые ассоциируются с каждой позицией:
Опция | Свойства |
---|---|
core (включено по умолчанию) | модуль QtCore |
gui (включено по умолчанию) | модуль QtGui |
network | модуль QtNetwork |
opengl | модуль QtOpenGL |
sql | модуль QtSql |
svg | модуль QtSvg |
xml | модуль QtXml |
xmlpatterns | модуль QtXmlPatterns |
qt3support | модуль Qt3Support |
Заметьте, что добавление опции opengl в переменную QT автоматически приводит к добавлению эквивалентной опции в переменную CONFIG. По этой причине для приложений Qt необходимо добавлять опцию opengl и в переменную CONFIG и в QT.
qmake может быть установлен с расширенными функциями конфигурации, которые определены в файле функций (.prf). Эти дополнительные функции часто поддерживают специальные инструменты, которые используются в процессе построения. Чтобы добавить возможность в процесс сборки добавьте имя возможности (основу имени файла возможности) в переменную CONFIG.
Например, qmake может управлять процессом сборки, что используется внешними библиотеками, которые поддерживаются pkg-config, как, например, библиотеки D-Bus и ogg:
CONFIG += link_pkgconfig PKGCONFIG += ogg dbus-1
Более подробную информацию о свойствах можно найти в разделе Добавление новых функций конфигурации главы Продвинутое использование qmake.
Если вы используете в вашем проекте не только библиотеки, поддерживаемые Qt, то вам нужно указать их в вашем файле проекта.
Каталоги, в которых qmake ищет библиотеки и специальные присоединяемые библиотеки, могут быть добавлены к списку значений переменной LIBS. Могут быть даны каталоги самих библиотек, или может использоваться обозначение в стиле Unix для определения библиотек и каталогов.
Например, следующие строки показывают, как может быть указана библиотека:
LIBS += -L/usr/local/lib -lmath
Каталоги, содержащие заголовочные файлы, могут быть указаны аналогичным образом, используя переменную INCLUDEPATH.
Например, можно добавить несколько различных каталогов для поиска заголовочных файлов:
INCLUDEPATH = c:/msdev/include d:/stl/include
[Предыдущая: Использование qmake] [Содержание] [Следующая: Запуск qmake]
Copyright © 2008 Nokia | Торговые марки | Qt 4.4.3 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |