Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

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

Общие проекты qmake

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

Платформо-зависимые переменные здесь не описываются; предлагаем обратиться к документу Развёртывание приложений Qt для получения информации о таких вопросах, как сборка универсальных двоичных файлов для Mac OS X и обработка файлов манифеста Visual Studio.

Сборка приложения

Шаблон app

Шаблон app сообщает qmake, как создавать файл сборки, по которому будет создано приложение. С этим шаблоном тип приложения может быть определён одной из опций CONFIG:

ОпцияОписание
windowsПриложение ГПИ в Windows.
consoleТолько шаблон app: приложение - консольное приложение Windows.

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

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

 TEMPLATE = app
 DESTDIR  = c:/helloapp
 HEADERS += hello.h
 SOURCES += hello.cpp
 SOURCES += main.cpp
 DEFINES += QT_DLL
 CONFIG  += qt warn_on release

Для элементов, которые имеют одно значение, например, шаблон или каталог назначения, мы используем "=". Но для элементов, которые имеют несколько значений, мы используем "+=", чтобы добавить значение к существующим элементам этого типа. Использование "=" заменяет значение элемента на новое, например, если мы написали DEFINES=QT_DLL, все остальные определения будут удалены.

Сборка библиотеки

Шаблон lib

Шаблон lib говорит qmake создать файл сборки, который скомпонует библиотеку. Во время использования этого шаблона, в дополнение к системным переменным, упомянутым выше для шаблона app, поддерживается переменная VERSION. Вы можете использовать эти переменные в вашем .pro файле для определения информации о библиотеке.

Во время использования шаблона lib, следующие опции могут быть добавлены к переменной CONFIG для определения типа получаемой библиотеки:

ОпцияОписание
dllБиблиотека является разделяемой библиотекой (dll).
staticlibБиблиотека является статической библиотекой.
pluginБиблиотека является подключаемым модулем; это также доступно при выборе опции dll.

Сборка подключаемого модуля

Подключаемые модули (plugins) собирают, используя шаблон lib, как описано в предыдущем разделе. qmake создает файл сборки для проекта, который будет скомпонован, как подключаемый модуль в подходящей форме для каждой платформы, обычно в форме библиотеки. Как и с обычными библиотеками, переменная VERSION используется для задания информации о подключаемом модуле.

Сборка подключаемого модуля Qt Designer'а

Подключаемые модули Qt Designer'а компонуются с использованием определенного набора установок конфигурации, которые зависят от метода, которым скомпонован Qt для вашей системы. Для удобства эти установки могут быть задействованы добавлением designer к переменной проекта CONFIG. Например:

 CONFIG      += designer plugin debug_and_release

Смотрите Примеры Qt Designer'а для получения большего количества примеров, основанных на подключаемых модулях.

Сборка и установка в режимах Debug и Release

Иногда необходимо собрать проект в обоих режимах, отладки и релиза. Хотя переменная CONFIG может поддерживать обе опции, debug и release, опция debug аннулирует опцию release.

Сборка в обоих режимах

Чтобы позволить собираться проекту в обоих режимах, вы должны добавить параметр debug_and_release в переменную CONFIG вашего проекта:

 CONFIG += debug_and_release

 CONFIG(debug, debug|release) {
     TARGET = debug_binary
 } else {
     TARGET = release_binary
 }

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

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

 make all

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

 CONFIG += build_all

Это позволяет обработать файл сборки, используя правило по умолчанию:

 make

Установка в обоих режимах

Опция build_all также обеспечивает, что обе версии результата будут установлены, когда будет вызвано правило установки:

 make install

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

 CONFIG(debug, debug|release) {
     mac: TARGET = $$join(TARGET,,,_debug)
     win32: TARGET = $$join(TARGET,,d)
 }

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

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


Copyright © 2008 Trolltech Торговые марки
Qt 4.3.5