ОПИСАНИЕ ПРИМЕРА

В этом разделе показывается, как создать сборку для простого проекта, состоящего из двух подпроектов: Клиент (Client) и Сервер (Server):

 

СОЗДАНИЕ ДЕРЕВА КАТАЛОГОВ ПРОЕКТА

На рисунке ниже предлагается дерево каталогов проекта.

Исходные файлы из каталога Client должны быть собраны в исполняемый файл Client, а исходные файлы из каталога Server должны быть собраны в исполняемый файл Server.

 

ШАГ - 1. СОЗДАНИЕ MAKE-EFFECT ПРОЕКТА

Перед созданием проекта следует создать файл конфигурации Make-Effect. Для этого из главного каталога проекта следует вызвать команду:

$ me-create -conf

В результате будет создан конфигурационный файл me-config.xml , который содержит параметры создаваемых в дальнейшем make-файлов. Для данного примера конфигурационный файл может быть оставлен без изменений.

Создание проекта осуществляется командой из корневого каталога проекта:

$ me-create -project

При этом создается главный make-файл проекта ( Makefile ), две сессии - релизная (Release) и отладочная (Debug) и примеры скриптов для упаковки проекта.

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

Основной информацией, которую следует задать, является список подпроектов, подлежащих сборке. Этот список необходимо задать с помощью параметра base_subprojs_dirs главного make-файла проекта (список главных каталогов подпроектов):

base_subprojs_dirs := src/Server src/Client

 

ШАГ - 2. СОЗДАНИЕ ФАЙЛОВ НАСТРОЕК ПОДПРОЕКТОВ

Шаг по созданию файлов настроек подпроектов не является обязательным для данного простого проекта. Файлы настроек будут созданы автоматически при первой сборке проекта. Создаваемые по умолчанию настройки годятся для компиляции проекта.

Все же, для случаев, когда настройки по умолчанию не отражают особенностей подпроектов, удобнее сначала создать файлы, отредактировать их и только потом приступать к сборке проекта. Команда me-create -subproj <путь к подпроекту> создаст необходимый файл настроек:

$ me-create -subproj src/Server
$ me-create -subproj src/Client

В процессе выполнения будет задан вопрос о том, какой из шаблонов для создания make-файла следует использовать. В обоих случаях необходим шаблон консольного приложения, т.е. следует выбирать вариант # 1 .

В результате в главных каталогах подпроектов появятся make-файлы с настройками по умолчанию.

 

ШАГ - 3. СБОРКА ПРОЕКТА

Как упоминалось в разделе УПРАВЛЕНИЕ СЕССИЯМИ сборка проекта усуществляется в рамках какой-либо из ранее созданных сборочных сессий. При создании проекта автоматически создается сессия с именем Debug , которую можно использовать для сборки.

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

$ me-create -debug <имя сессии>

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

session=Debug

Сама сборка осуществляется с помощью команды make build из главного каталога проекта:

$ make build

или сокращенно:

$ make

т.к. действие build, как правило, является действием по умолчанию.

В результате сборки в каталоге сессии появится подкаталог bin с исполняемыми файлами. Одновременно с этим будет создан кэш объектных файлов, который может быть использован в дальнейшем для уменьшения времени компиляции.

Кэш объектных файлов позволяет пересобирать только те объектные файлы, исходные коды которых изменились. Так, например, можно убедиться, что изменение файла ClientTCPEngine.c :

$ touch src/Client/ClientTCPEngine.c

приведет только к перекомиляции ClientTCPEngine.o и пересборке исполняемого файла Client, при повторном вызове команды make .

 

ИСПОЛЬЗОВАНИЕ МОДУЛЬНЫХ ТЕСТОВ

Если параметр tests_ldflags файла me-config.xml указывает на используемую библиотеку модульного тестирования, то все, что необходимо сделать - это поместить исходные файлы модульных тестов в подкаталоги Tests каталогов с исходными файлами подпроектов. В противном случае придется изменять значение параметра <имя подпроекта>_tests_ldflags во всех make-файлах подпроектов, чтобы указать используемую библиотеку.

Сборка и исполнение модульных тестов осуществляется командой make tests .

Сборку тестов можно включить в список действий по умолчанию для сборочной сессии, например:

Debug/Makefile.in:
default: build tests

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