so_4: Версия 4.4.0. Подключение библиотеки ACE

Введение

В предыдущих бета-версиях SObjectizer 4.4.0 для подключения новой версии библиотеки ACE требовалось ручное создание проектных файлов для Mxx_ru (поскольку ACE использует собственный механизм генерации проектных файлов, MPC, в котором генерация проектных файлов Mxx_ru не предусмотрена). Это затрудняло переход на новые версии ACE, в которых устраняются ошибки и добавляется новая функциональность. По этой причине SObjectizer долгое время поставлялся с использованием довольно старой версии 5.4.3 библиотеки ACE.

Новая схема использования библиотеки ACE позволяет обойтись без создания проектных файлов Mxx_ru для каждой новой версии ACE. Следовательно, добавлена возможность смены версии ACE безотностительно к версии SObjectizer.

Текущая схема

В текущей схеме вокруг системы компиляции ACE сделана обертка из Ruby скриптов, которая позволяет инкапсулировать систему компиляции ACE в систему Mxx_ru. Идея в том, что каталог ace сейчас содержит набор скриптов-оберток и подкаталог ACE_wrappers, который содержит разархивированную копию библиотеки ACE.

В SObjectizer, как и прежде, подключаются Mxx_ru проектные файлы ace/prj.rb, ace/dll.rb, ace/lib.rb. Но сейчас они всего лишь запускают нативную систему компиляции из ACE для текущего тулсета. Так, под Visual C++ библиотека ACE компилируется с помощью devenv из состава Microsoft Visual Studio. Под MinGW C++ компиляция выполняется с помощью GNU make (аналогично с компиляцией под Linux и под Cygwin).

Такая схема позволяет легко сменить содержимое подкаталога ace/ACE_wrappers на новую версию ACE без необходимости переписывать ace/dll.rb и ace/lib.rb.

Неприятным следствием из этого является необходимость встраивать в скрипты-обертки поддержку средств компиляции ACE различными тулсетами. На данный момент поддерживаются следующие тулсеты:

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

Распаковка архива библиотеки ACE

Размещать распакованный архив библиотеки ACE в подкаталог ace/ACE_wrappers можно либо вручную, либо с помощью вспомогательного проекта ace/ace_lib_unpacker.rb. Этот проект проверяет наличие каталога ace/ACE_wrappers. Если каталога нет, что в ace_lib_distrib ищется архив библиотеки ACE (в виде ACE-*.tar.bz2 файла). Если архив найден, то он распаковывается так, чтобы ACE_wrappers был размещен в подкаталоге ace.

Для того, чтобы использовать ace/ace_lib_unpacker.rb необходимо подключить его в какой-либо из своих проектных файлов. Например, в build.rb:

require 'mxx_ru/cpp'

MxxRu::Cpp::composite_target( MxxRu::BUILD_ROOT ) {

  global_include_path( "." )

  required_prj( "ace/ace_lib_unpacker.rb" )
  ...

Заметки:
Если ace/ace_lib_unpacker.rb указан в build.rb, а библиотека ACE еще не распакована, то первый запуск на компиляцию должен выполняться через build.rb. Поскольку, если будет запущена компиляция какого-нибудь другого проектного файла, то ace/ace_lib_unpacker.rb просто не будет запущен.

Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой  doxygen1.5.6 Intervale SourceForge.net Logo