ОСНОВНЫЕ ТЕРМИНЫ

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

Make-Effect позволяет задавать настройки сборки проекта для разных этапов разработки программного продукта и для работы над разными подпроектами.

Множество настроек называется сборочной сессией.

 

СТРУКТУРА MAKE-EFFECT ПРОЕКТА

Средством, с помощью которого осуществляется управление сессиями, является утилита make . Команды Make-Effect используются только при созданнии проекта.

Проект, созданный с помощью Make-Effect, состоит из следующих типов файлов:

Тип Расположение Количество экземпляров
главный make-файл проекта Makefile в корневом каталоге проекта один
файл настроек подпроекта Makefile.in в каталоге подпроекта по одному на каждый подпроект
файл настроек сесии Makefile.in в каталоге сессии или mk-<имя_сессии>.in в корневом каталоге проекта по одному на каждую сессию

главный make-файл проекта

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

файл настроек сессии

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

файл настроек подпроекта

cодержит настройки подпроекта: ключи компиляции, список каталогов исходных файлов, список необходимых для сборки библиотек.

Файлы настроек подпроектов можно создавать самостоятельно, однако, в большинстве случаев удобно воспользоваться одной из доступных заготовок:

 

ТИПЫ СБОРОЧНЫХ СЕССИЙ

Make-Effect позволяет создавать два типа сборочных сессий: финальная (релизная) и отладочная.

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

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

Названия сессий могут быть заданы произвольно. Однако, как правило, названия релизных сессий имеют префикс "Release", а названия отладочных сессий - префикс "Debug".

 

СБОРКА ПРОЕКТА

Cборка проекта может осуществляться только в рамках какой либо из созданных сессий. На рисунке выше приведен пример проекта, для которого созданы две сессии Debug и Release.

Для того, чтобы осуществить сборку в рамках сессии Debug следует указать имя сессии в файле .me-session корневого каталога проекта:

session=Debug

и выполнить команду make.

Указать сессию можно также при выполнении команды make , в этом случае содержимое файла .me-session будет проигнорировано.

$ make session=Debug .

Если сессия не задана явно (одним из вышеперечисленных способов), то для сборки будет использоваться сессия по умолчанию, которая определяется в главном make-файле проекта:

session=Release

Совет:

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

$ make
$ make install

 

ИСПОЛЬЗОВАНИЕ СОВМЕСТНО С СИСТЕМАМИ КОНТРОЛЯ ВЕРСИЙ

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

К индивидуальной части проекта относятся:

К общей части проекта относится:

 

ПОДДЕРЖКА МОДУЛЬНОГО ТЕСТИРОВАНИЯ

По умолчанию для модульного тестирования предлагается использовать библиотеку WppUnit (http://sourceforge.net/projects/wppunit). Если библиотека установлена, и каталоги подпроектов содержат подкаталоги Tests , то для запуска модульных тестов следует выполнить команду:

$ make tests

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