Файлы проекта qmakeФайлы проекта содержат всю необходимую информацию для того, чтобы qmake собрал ваше приложение, библиотеку или подключаемый модуль (plugin). Ресурсы, используемые вашим приложением, определяются в основном с помощью последовательностей объявлений, но, кроме того, поддержка простой программной структуры позволяет вам описывать различные процессы компоновки для различных платформ и сред. Элементы файла проектаФормат файла проекта, используемый qmake, может применяться для поддержки как простых, так и довольно сложных систем сборки. Простые файлы проекта будут использовать прямой декларативный стиль, определяя стандартные переменные для указания исходных файлов и файлов заголовков в проекте. Сложные проекты могут использовать управляющие структуры для тонкой настройки процесса сборки. Следующие разделы описывают различные типы элементов, используемых в файлах проекта. ПеременныеВ файле проекта, переменные используются для хранения списков строк. В простых проектах эти переменные информируют qmake о параметрах настройки, именах файлов и каталогах, которые используются в процессе сборки. qmake ищет определенные переменные для каждого файла проекта и использует их содержимое для определения того, что нужно записать в файле сборки. Например, список значений в переменных HEADERS и SOURCES используется, чтобы сообщить qmake о заголовочных файлах и исходных файлах, которые находятся в том же каталоге, что и файл проекта. Также переменные могут использоваться внутри файла проекта для хранения временного списка значений, а существующий список значений может быть перезаписан или расширен новыми значениями. Следующая строка показывает, как переменной присваивается список значений: HEADERS = mainwindow.h paintwidget.h Заметьте, что первое присваивание добавляет только те значения, которые определены в той же строке что и переменная SOURCES. Второе присваивание разделяет элементы на строки, используя символ \\. Список значений переменной расширяется следующим образом: SOURCES = main.cpp mainwindow.cpp \ paintwidget.cpp CONFIG += qt Переменная CONFIG – это другая специальная переменная, которую qmake использует во время создания файла сборки. Она описана в разделе общие настройки (general configuration) далее в этой главе. В строчке выше значение qt добавлено в список существующих значений, содержащихся в переменной CONFIG. Следующая таблица перечисляет переменные, которые распознает qmake, и описывает, что в них должно содержаться.
Содержимое переменной может быть прочитано с помощью добавления префикса $$ к имени переменной. Это может быть использовано для того, чтобы присвоить содержимое одной переменной другой. TEMP_SOURCES = $$SOURCES Оператор $$ в основном используется со встроенными функциями, которые работают со строками и списками значений. Это описано в главе Продвинутое использование qmake. Пробельные символыКак правило, переменные используются для хранения списков значений, разделенных пробельным символом (пробелы, символы горизонтальной и вертикальной табуляции и символы перевода строки). Тем не менее, иногда требуется указать значения, содержащие пробелы. Они должны быть заключены в двойные кавычки: DEST = "Program Files" Взятый в кавычки текст обрабатывается как один элемент в списке значений, хранящемся в переменной. Аналогичный подход используется когда имеют дело с путями, содержащими пробелы, особенно когда определяются переменные INCLUDEPATH и LIBS на платформе Windows: win32:INCLUDEPATH += "C:/mylibs/extra headers" unix:INCLUDEPATH += "/home/user/extra headers" КомментарииВы можете добавлять комментарии в файл проекта. Комментарии начинаются с символа # и продолжаются до конца этой строки. Например: # Комментарии обычно начинаются с начала строки, но они # также могут продолжаться на следующей строке. Чтобы включить символ # в значение переменной, необходимо использовать содержимое встроенной переменной 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 и lib. Когда используется шаблон subdirs, qmake создает файл сборки для проверки каждого подкаталога, обрабатывает каждый файл проекта, найденный в нем, и запускает инструмент сборки make на данной платформе для только что созданного файла сборки. Переменная SUBDIRS используется для хранения списка всех обрабатываемых подкаталогов. Общие настройкиПеременная CONFIG определяет параметры и возможности, которые должен использовать компилятор, и библиотеки, с которыми будет идти компоновка. Всё должно быть учтено в переменной CONFIG, но стоит обратить внимание, что следующие опции общеприняты для qmake. Следующие опции управляют флагами компилятора, которые используются для сборки проекта:
Особенность опции 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 и вы хотите, чтобы оно было собрано как многопоточное приложение в режиме отладки debug, ваш файл проекта должен будет содержать следующую строку: CONFIG += qt thread debug Заметьте, что вы должны использовать "+=",а не "=", или qmake не сможет использовать конфигурацию Qt для определения настроек, необходимых вашему проекту. Более подробную информацию об операторах можно найти в разделе Операторы главы Продвинутое использование 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 # будет использоваться только модуль ядра. Более подробную информацию об операторах можно найти в разделе Операторы главы Продвинутое использование qmake. Таблица ниже показывает опции, которые могут быть использованы с переменной QT и свойства, которые ассоциируются с каждой позицией:
Заметьте, что добавление опции 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 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |