Main / SObjectizer 5 / Install

Инсталляция SObjectizer

Зависимости

Компиляция SObjectizer, его примеров и тестов выполняется посредством инструмента Mxx_ru использующего язык Ruby. Поэтому, прежде, чем приступать к компиляции SObjectizer, необходимо установить Ruby и Mxx_ru. После чего настроить Mxx_ru на использование соответствующего компилятора (установить должным образом переменную среды MXX_RU_CPP_TOOLSET).

Для нормальной работы SObjectizer 5 необходима версия ACE 6.0.* 6.1.* или выше. Версии библиотеки ACE, отличные от 6.0.* 6.1.* не поддерживаются.

Установка Mxx_ru

Mxx_ru распространяется в виде RubyGem-а, который доступен в центральном репозитории RubyGems на сайте RubyForge. Для установки Mxx_ru необходимо иметь Ruby и установленную в Ruby систему управления RubyGems. После этого необходимо проинсталлировать Gem Mxx_ru и выставить в правильное значение переменную среды MXX_RU_CPP_TOOLSET, иначе Mxx_ru попытается определить ее самостоятельно (начиная с версии 1.5.3).

Установка RubyGems

Подробные инструкции по инсталляции RubyGems даны на сайте RubyGems. Если RubyGems еще не входит в состав вашей инсталляции Ruby (например, RubyGems является частью стандартной библиотеки Ruby 1.9.1), то достаточно скачать последнюю версию RubyGems с RubyForge, распаковать ее в какой-нибудь каталог, после чего в этом каталоге выполнить команду:

ruby setup.rb

Затем на UNIX-платформах может потребоваться установить переменную среды RUBYOPT:

export RUBYOPT="rubygems"

Если для инсталляции Ruby под Windows используется One-Click Installer, то устанавливать и настраивать RubyGems в ручную нет необходимости -- это делает One-Click Installer.

Инсталляция Gem Mxx_ru

Инсталляция Gem Mxx_ru выполняется командой gem install:

gem install Mxx_ru
Примечание. Для компиляции SObjectizer версии 5.1 требуется Mxx_ru версии 1.5.6 или выше. По умолчанию ставится последняя доступная версия Gem-а.

Настройка переменной среды MXX_RU_CPP_TOOLSET

Для GNU C++ под Linux:

export MXX_RU_CPP_TOOLSET=gcc_linux

Для MinGW под Windows:

set MXX_RU_CPP_TOOLSET=gcc_mingw

Для GNU C++ под Cygwin:

export MXX_RU_CPP_TOOLSET=gcc_cygwin

Для Visual C++ 7.1 под Windows:

set MXX_RU_CPP_TOOLSET=vc7

Для Visual C++ 8.0 под Windows:

set MXX_RU_CPP_TOOLSET=vc8

Для Visual C++ 9.0 под Windows:

set MXX_RU_CPP_TOOLSET=vc9

Для Visual C++ 10.0 под Windows:

set MXX_RU_CPP_TOOLSET=vc10

Intel C++ for Windows:

set MXX_RU_CPP_TOOLSET=icc_win

Другие доступные значения для MXX_RU_CPP_TOOLSET см. в документации по Mxx_ru.

Инсталляция и компиляция SObjectizer

Распаковка

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

Распаковка ACE

Исходные тексты библиотеки ACE должны располагаться в каталоге SO5_ROOT/dev/ace/ACE_wrappers. В этом каталоге должны быть подкаталоги ace, include, lib и другие из состава ACE. Существует два способа распаковки ACE: автоматический, когда распаковкой занимаются Ruby скрипты, входящие в состав SObjectizer, и ручной, когда за распаковку ACE отвечает пользователь SObjectizer.

Примечание. Для SObjectizer достаточен дистрибутив ACE, в который входит только сам ACE без TAO и CIAO. Обычно этот дистрибутив имеет имя ACE-X.Y.Z-lib.tar.bz2 или ACE-X.Y.Z.tar.bz2 (так же есть архивы tar.gz и zip). Например, ACE-6.1.6.tar.bz2, ACE-6.0.5.tar.bz2. Архивы ACE, в которые входят TAO и CIAO называются, например, так: ACE+TAO-6.1.6.tar.bz2 и ACE+TAO+CIAO-6.1.8.tar.bz2. Они имеют гораздо больший объем, но использовать их для SObjectizer не имеет смысла, т.к. SObjectizer не нуждается в TAO и CIAO.

Для получения ACE можно обратиться к странице Obtaining ACE.

Автоматическая распаковка ACE

Для автоматической распаковки ACE необходимо разместить архив ACE (в виде ACE-*-lib.tar.bz2 или ACE-*.tar.bz2) файла в каталог SO5_ROOT/dev/ace_lib_distrib после чего подключить в какой-либо из проектных файлов (например, build.rb) проект ace/ace_lib_unpacker.rb:

require 'mxx_ru/cpp'

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

  global_include_path( "." )

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

Подробнее см. соответствующий раздел в API Reference Manual.

Ручная распаковка ACE

Самый простой способ ручной распаковки ACE -- это войти в каталог SO5_ROOT/dev/ace и дать команду на распаковку архива ACE. Например, если архив ACE имеет имя d:/download/ACE-6.1.8.tar.bz2, то распаковка будет выглядеть, например, так:

cd d:/usr/src/so5.0/dev/ace
tar jxf d:/download/ACE-6.1.8.tar.bz2

в результате в d:/usr/src/so5.0/dec/ace будет создан подкаталог ACE_wrappers со всеми необходимыми подкаталогами.

Компиляция

Компиляция SObjectizer

Для компиляции SObjectizer необходимо войти в SO5_ROOT/dev и выполнить команду:

ruby build.rb --mxx-cpp-release

Эта команда выполняет компиляцию SObjectizer в Release режиме. Если необходимо скомпилировать SObjectizer в Debug режиме, следует выполнить команду:

ruby build.rb --mxx-cpp-debug

Для Win32 результаты компиляции размещаются в SO5_ROOT/dev (EXE и DLL) и SO4_ROOT/dev/lib (LIB). Для Linux-а результаты размещаются в SO5_ROOT/dev (исполнимые файлы и .so) и SO5_ROOT/dev/lib (.a файлы).

Примечание. Для Unix может потребоваться установить переменную среды LD_LIBRARY_PATH на каталог, в котором выполняется компиляция SObjectizer. Например, под Linux может быть достаточно выполнить команду:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

Полная компиляция (включая тесты и примеры)

Для полной компиляции всего SObjectizer с тестами и примерами необходимо войти в SO5_ROOT/dev и выполнить команду:

ruby build_all.rb --mxx-cpp-release

В результате компиляции исполнимые файлы размещаются в SO5_ROOT/dev.

Примечание. Часть тестов являются unit-тестами и после их компиляции будет так же проверяться корректность прохождения unit-теста. Если какой-то unit-тест завершается неудачно, то вся компиляция останавливается.

Список поддерживаемых компиляторов

  • msvc10 (x64, x32)
  • g++ 4.6.4 (x64)
  • g++ 4.7.2 (x32)
  • g++ 4.7.3 (x64)
  • g++ 4.8.0 (x64)