/*!
\page oess_1_4_0__including_ace	oess_1.4.0. Подключение библиотеки ACE

\section oess_1_4_0__including_ace__intro Введение

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

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

\section oess_1_4_0__including_ace__current_scheme Текущая схема

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

В ObjESSty, как и прежде, подключаются 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 различными тулсетами. На
данный момент поддерживаются следующие тулсеты:
- Visual C++ 7.1;
- MinGW C++;
- GNU C++ под Cygwin;
- GNU C++ под Linux.

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

\section oess_1_4_0__including_ace__auto_unpacking Распаковка архива библиотеки 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:
\code
require 'mxx_ru/cpp'

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

	global_include_path( "." )

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

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

*/

