Skip to content
Viacheslav Naydenov edited this page Jul 17, 2014 · 3 revisions

С чего начать

Чтобы попробовать инструментарий YB.ORM в вашем окружении нужно собрать саму библиотеку и утилиту командной строки для генерации кода. Есть несколько способов это сделать.

  • Для пользователей Windows, более простой способ - взять готовый пакет, совместимый с вашим компилятором, См. Готовые пакеты.

  • В любом окружении вы можете скачать один из релизов в виде архива с исходным кодом, сконфигурировать и собрать его. Доступны для использования две системы сборки: Autotools и CMake, см. Сборка с помощью Autotools и Сборка с помощью CMake.

  • Для систем на базе Debian GNU/Linux и Ubuntu можно собрать .deb пакет.

Используйте Git чтобы получить свежий код из репозитория, см. Git репозиторий проекта YB.ORM, и уже потом использовать Autotools или CMake.

Затем вам вероятно захочется настроить тестовую БД, чтобы прогнать тесты и примеры, см. Настройка тестовой БД.

Готовые пакеты

В каждом релизе YB.ORM есть готовые пакеты для разработчиков, использующих Microsoft Windows, в виде .zip-файлов - чтобы было легче поэкспериментировать с данным инструментарием. Эти пакеты собраны с конкретными версиями библиотек Boost или Qt. Собраны они конкретными версиями компиляторов C++ (напр. MinGW 4.4, MSVC 2013, MSVC 2010, и т.д.). Версия, собранная с Boost, включает в себя все необходимые компоненты библиотек Boost, в то время как версия, собранная с Qt, требует установки соответствующей версии Qt SDK вручную. По умолчанию, версия с Boost имеет в качестве бакэнда для БД ODBC драйвер и родной драйвер для SQLite, версия с Qt использует QtSql. Конечно, вы можете пересобрать YB.ORM с использованием того тулкита/компилятора/бакэнда для БД, который вам подходит, исходный код имеется.

Замечание для Qt4 и MinGW: Qt4 SDK было собрано производителем с использованием компилятора MinGW 4.4.0, который более не доступен с официального сайта, но его можно взять здесь.

Содержимое готового пакета

Готовый пакет в виде .zip файла, содержащий библиотеку YB.ORM, собранную для Microsoft Windows, обычно распаковывается в папку c:\yborm-<версия>-<компилятор>. Ниже приведенное описание использует папку c:\yborm в качестве корня. После извлечения образуется следующая структура папок:

Путь Описание
c:\yborm корень установки инструментария YB.ORM
c:\yborm\bin
  • .dll файлы самой библиотеки: ybutil.dll, yborm.dll.
  • файлы .dll, от которых может зависеть данная сборка: boost_date_time, boost_thread, cppunit, libxml2, sqlite3, различные служебные библиотеки
    			<li>некоторые сторонние утилиты:
    			<tt>iconv.exe</tt>, <tt>xmllint.exe</tt>,
    			<tt>xsltproc.exe</tt>, <tt>sqlite3.exe</tt>
    							
    			<li>утилита генерации кода: <strong><tt>yborm_gen.exe</tt></strong>
    							
    			<li>конфигурация окружения: <strong><tt>yborm_env.bat</tt></strong>
    		</ul>
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\build</tt>
    	</td>
    	<td>
    		папка сборки для самой библиотеки
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\build-auth</tt>
    	</td>
    	<td>
    		папка сборки для примера Auth
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\build-tut</tt>
    	</td>
    	<td>
    		папка для сборки примеров из папки
    		tutorial
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\doc</tt>
    	</td>
    	<td>
    		документация в формате HTML
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\examples</tt>
    	</td>
    	<td>
    		собранные примеры и тесты, файлы
    		схем, тестовая база <a href="http://www.sqlite.org/">SQLite3</a>,
    		файлы <tt>.bat</tt> для удобного
    		запуска
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\include</tt>
    	</td>
    	<td>
    		заголовочные файлы для <a href="http://www.sqlite.org/">SQLite3</a>,
    		а также:
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\include\boost</tt>
    	</td>
    	<td>
    		- для включенной версии <a href="http://www.boost.org/">Boost</a>
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\include\cppunit</tt>
    	</td>
    	<td>
    		- для включенной версии <a href="http://sourceforge.net/apps/mediawiki/cppunit/">CppUnit</a>
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\include\libxml</tt>
    	</td>
    	<td>
    		- для включенной версии <a href="http://www.xmlsoft.org/">LibXml2</a>
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\include\yb</tt>
    	</td>
    	<td>
    		- <strong>заголовочные файлы для YB.ORM</strong>
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\lib</tt>
    	</td>
    	<td>
    		статические библиотеки YB.ORM, если
    		используется статическая сборка, или
    		библиотеки импорта: <strong><tt>ybutil.lib</tt></strong>,
    		<strong><tt>yborm.lib</tt></strong> (или файлы
    		<tt>.a</tt>, в случае MinGW); а также
    		библиотеки импорта для зависимостей
    		YB.ORM
    	</td>
    </tr>
    <tr>
    	<td>
    		<tt>c:\yborm\src</tt>
    	</td>
    	<td>
    		исходный код данной версии
    	</td>
    </tr>
    

После распаковки можно запускать примеры и тесты из папки examples без каких-либо дополнительных настроек.

Пересборка пакета YB.ORM

Самый простой способ собрать YB.ORM под MS Windows - это пересобрать один из готовых пакетов. Это может быть полезно, к примеру, если у вас уже установлен YB.ORM, и просто нужна более свежая версия из Git, или если вы скачали сборку с Qt и хотите пересобрать с Boost. В этом случае поместите свежие исходники в папку src, затем используйте окно командной строки чтобы перейти cd в папку build и запустите соответствующий файл build-*.bat оттуда. Если вы используете MS Visual C++ то следует запускать сборку из командной строки Visual Studio command line prompt. Все такие файлы .bat просто вызывают CMake с предопределенными параметрами, а затем запускают команду типа make. После того, как сборка успешно завершилась, новые библиотеки, заголовочные файлы, примеры и утилита генерации кода заменят старые файлы в соответствующих папках. Ниже приведены необходимые требования для пересборки.

Система сборки:
	</td>
	<td>
		CMake 2.8 установлен и доступен через
		переменную окружения <tt>PATH</tt>
					
	</td>
</tr>
<tr>
	<td>
		Компилятор: 
		
	</td>
	<td>
		MinGW GCC 4.4.0, MS Visual C++ 2013, 2010, 2008 или другой
		компилятор, которым был собран пакет
					
	</td>
</tr>
<tr>
	<td>
		Qt SDK: 
		
	</td>
	<td>
		тестировалось с Qt4.8, требуется только
		для сборки с Qt, см. замечание выше о
		&quot;правильной&quot; версии компилятора
		MinGW. 
		
	</td>
</tr>

Убедитесь, что задан правильный режим сборки (с или без Qt) а также установите переменную PATH для запуска компилятора и утилит из Qt SDK в фале \bin\yborm_env.bat.

Тем же образом можно пересобрать пример Auth и примеры Tutorial (только без Qt) в папках build-auth и build-tut, соответственно.

Сборка с помощью Autotools

Это программное обеспечение разрабатывается, в основном, под Ubuntu Linux, с использованием инструментов GNU, включая GNU Autotools. Вы можете собрать YB.ORM в среде, совместимой с POSIX, такой как Linux, FreeBSD, Mac OS X или Cygwin. Типичная последовательность шагов:

$ sh autogen.sh  # создать скрипт configure; требуется после "git clone", не для исходников из тарбола с релизом
$ ./configure --prefix=/home/user1/yb-orm --with-test-db-url=sqlite+sqlite:///home/user1/test1_db.sqlite --disable-static
$ make
$ make check     # для запуска тестов понадобится создать базу /home/user1/test1_db.sqlite
$ make install   # будет установлено в /home/user1/yb-orm

Скрипт configure пытается автоматически определить доступность и расположение библиотек и заголовочных файлов. Есть несколько опций для этого скрипта, которые управляют этим поиском. Также можно указать строку подключение к тестовой базе. Чтобы включить сборку с Qt используйте опции \--with-qt-includes, \--with-qt-libs, для сборки с wxWidgets используйте опцию \--with-wx-config.

$ ./configure --help
...
  --prefix=PREFIX        Корень установки файлов, по умолчанию [/usr/local]
  --with-qt-includes=DIR Директория с заголовочными файлами QT
  --with-qt-libs=DIR     Директория с библиотеками QT
  --with-wx-config=BIN   Конфигурационный скрипт библиотеки wxWidgets
  --with-boost=DIR       Директория, куда установлен Boost
  --with-soci-includes=DIR
                         Директория с заголовочными файлами SOCI
  --with-soci-libs=DIR   Директория с библиотеками SOCI
  --with-test-db-url=dialect+driver://user:password@database or like
                         Строка подключения (URL) для тестовой БД
...

Пользовательские макросы, используемые в скрипте configure, помещаются в acinclude.m4. Если вы собираете свое приложение с помощью Autotools и YB.ORM, можно взять макрос YB_CHECK_YBORM() в свой файл configure.ac. Это добавит опцию \--with-yborm-root к вашему скрипту configure. Смотрите пример: приложение Auth.

Минимальные требования

Сборка YB.ORM с библиотекой Boost проверялась в среде Ubuntu Linux, начиная с версии 8.04. Следующие версии пакетов должны подойти:

  • libboost-thread-dev >= 1.34.1

  • libboost-date-time-dev >= 1.34.1

  • libxml2-dev >= 2.6.31

  • libcppunit-dev >= 1.12.0 (если вы собираетесь запускать наборы тестов)

  • autoconf >= 2.61

  • automake >= 1.10.1

  • libqt4-dev >= 4.5 (проверялось на Ubuntu 9.04)

  • libwxgtk2.8-dev >= 2.8.12

Для доступа к базе данных потребуется что-то из следующего:

  • libsqlite3-dev >= 3.7.9

  • soci >= 3.2.0

  • unixodbc-dev >= 2.2.14 (чтобы заработала связка Oracle ODBC под Ubuntu 8.04 64bit пришлось использовать unixODBC = 2.3.0)

  • instantclient >= 10.2 (клиент и драйвер ODBC для Oracle)

  • libmyodbc >= 5.1.10

  • odbc-postgresql >= 09.00.0310

Сборка с помощью CMake

GNU Autotools бесполезны когда дело доходит до компиляторов Microsoft Visual C++ или других компиляторов под Windows, кроме MinGW GCC. Поэтому добавлены скрипты CMake для сборки YB.ORM под Windows, хотя для окружения POSIX они так же подойдут. Этот метод сборки был протестирован для следующих версий ПО:

  • MS Visual C++ 2013 Express Edition, Boost 1.53.0

  • MS Visual C++ 2010 Express Edition, Boost 1.46.1, Qt 4.8.1

  • MS Visual C++ 2008 Express Edition, Boost 1.38.0, Qt 4.8.1

  • MinGW GCC 4.4.0, Boost 1.46.1, Qt 4.8.1

  • Ubuntu Linux GCC 4.6.3, Boost 1.46.1, Qt 4.8.1

Загрузить CMake 2.8 можно отсюда: http://www.cmake.org/cmake/resources/software.html Убедитесь, что команда cmake доступна через переменную окружения PATH.

Можно передать CMake параметры, здесь есть несколько примеров:

-G "NMake Makefiles"
	</td>
	<td>
		какой диалект языка Makefile использовать
					
	</td>
</tr>
<tr>
	<td>
		-D USE_QT4:BOOL=ON 
		
	</td>
	<td>
		сборка с Qt 
		
	</td>
</tr>
<tr>
	<td>
		-D CMAKE_INSTALL_PREFIX=c:/yborm 
		
	</td>
	<td>
		задать корень установки 
		
	</td>
</tr>
<tr>
	<td>
		-D SOCI_INCLUDEDIR:PATH=c:/work/soci-3.2.1/include/soci 
		
	</td>
	<td>
		заголовочные файлы библиотеки SOCI 
		
	</td>
</tr>
<tr>
	<td>
		-D SOCI_LIBS:FILEPATH=c:/work/soci-3.2.1/lib/libsoci_core.lib 
		
	</td>
	<td>
		библиотека SOCI 
		
	</td>
</tr>

Настройка тестовой базы данных

Для запуска тестов и примеров нужна настроенная тестовая БД. Если вы загрузили готовый пакет для Windows, то в нем уже есть файл с базой SQLite3, находится тут: c:\yborm\examples\test1_db, при условии что пакет распакован в папку c:\yborm. В остальных случаях нужно создать базу данных (или схему), а затем создать в ней тестовые таблицы.

В случае если используется ODBC, нужно настроить источник данных (DSN) для вашей базы, используя утилиту odbcad32.exe. В среде POSIX это же делается путем редактирования конфигурационных файлов: /etc/odbcinst.ini - для настройки драйверов и ~/.odbc.ini - для заведения пользовательских источников данных DSN.

Замечание для пользователей Windows 64 бита: поскольку данная библиотека в составе готовых пакетов скомпилирована в режиме 32 бита, если только вы сами не перекомпилировали ее 64-битным компилятором, вам следует использовать 32-битную версию утилиты odbcad32.exe: c:\windows\syswow64\odbcad32.exe.

Ниже приведены шаги, которые помогут создать пустую тестовую БД с тестовым аккаунтом пользователя (используя SQLite3, MySQL, Postgres или Firebird), а потом создать тестовые таблицы в ней.

SQLite3

Примеры строк для подключения к БД SQLite3:

"sqlite+sqlite://./test1_db"

"sqlite+sqlite://c:/yborm/examples/test1_db"

"sqlite+qtsql://c:/yborm/examples/test1_db"

Этот драйвер является драйвером по умолчанию для готовых пакетов. Утилита- оболочка sqlite3.exe идет в составе готовых пакетов YB.ORM, см. папку bin.

Применить сгенерированные скрипты SQL можно так:

C:\yborm\bin>sqlite3 c:\yborm\examples\test1_db < c:\yborm\examples\test_schema.sql
C:\yborm\bin>sqlite3 c:\yborm\examples\test1_db < c:\yborm\examples\ex2_schema.sql
C:\yborm\bin>sqlite3 c:\yborm\examples\test1_db < c:\yborm\examples\auth_schema.sql

MySQL

Примеры строк для подключения к БД MySQL:

"mysql+odbc://test1_usr:test1_pwd@test1_dsn"

"mysql+soci://user=test1 pass=test1_pwd host=localhost service=test1_db"

"mysql+soci_odbc://DSN=test1_dsn;UID=test1_usr;PWS=test1_pwd"

"mysql+qodbc3://test1_usr:test1_pwd@test1_dsn"

"mysql+qtsql://test1_usr:[email protected]:3306/test1_db"

Вам должен быть известен пароль для пользователя root от вашей установки MySQL, чтобы можно было управлять базами и пользователями.

C:\MySQL\bin>mysql.exe -u root -p mysql
Enter password: ******** <-- введите сюда пароль пользователя root базы MySQL
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 361
Server version: 5.0.51b-community-nt-log MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database test1_db default charset utf8;
Query OK, 1 row affected (0.00 sec)
mysql> create user 'test1_usr'@'localhost' identified by 'test1_pwd';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on test1_db.* to 'test1_usr'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye

Применить сгенерированные скрипты SQL можно так:

C:\MySQL\bin>mysql.exe -u test1_usr -ptest1_pwd test1_db < c:\yborm\examples\test_schema.sql
C:\MySQL\bin>mysql.exe -u test1_usr -ptest1_pwd test1_db < c:\yborm\examples\ex2_schema.sql
C:\MySQL\bin>mysql.exe -u test1_usr -ptest1_pwd test1_db < c:\yborm\examples\auth_schema.sql

Postgres

Примеры строк для подключения к БД Postgres:

"postgres+odbc://test1_usr:test1_pwd@test1_dsn"

"postgres+qodbc3://test1_usr:test1_pwd@test1_dsn"

"postgres+qtsql://test1_usr:[email protected]:5432/test1_db"

C:\Program Files\PostgreSQL\9.1\bin>createuser -U postgres -h 127.0.0.1 -p 5432 -D -A -P test1_usr
Enter password for new role: test1_pwd
Enter it again: test1_pwd
Shall the new role be allowed to create more new roles? (y/n) n
Password: <ваш главный пароль от Postgres>
C:\Program Files\PostgreSQL\9.1\bin>createdb -U postgres -h 127.0.0.1 -p 5432 -O test1_usr test1_db
Password: <ваш главный пароль от Postgres>

Применить сгенерированные скрипты SQL можно так:

C:\Program Files\PostgreSQL\9.1\bin>psql -h 127.0.0.1 -p 5432 -d test1_db -U test1_usr < c:\yborm\examples\test_schema.sql
Password for user test1_usr: test1_pwd
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t_orm_test_pkey" for table "t_orm_test"
CREATE TABLE
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t_orm_xml_pkey" for table "t_orm_xml"
CREATE TABLE
ALTER TABLE
CREATE SEQUENCE
CREATE SEQUENCE
C:\Program Files\PostgreSQL\9.1\bin>psql -h 127.0.0.1 -p 5432 -d test1_db -U test1_usr < c:\yborm\examples\ex2_schema.sql
Password for user test1_usr: test1_pwd
...
C:\Program Files\PostgreSQL\9.1\bin>psql -h 127.0.0.1 -p 5432 -d test1_db -U test1_usr < c:\yborm\examples\auth_schema.sql
Password for user test1_usr: test1_pwd
...

Firebird

Примеры строк для подключения к БД Postgres (для Interbase может тоже подойти):

"interbase+odbc://test1_usr:test1_pwd@test1_dsn"

"interbase+soci://service=localhost:/var/lib/firebird/2.5/data/test1_db.fdb user=test1_usr password=test1_pwd charset=UTF8"

Пароль по умолчанию для пользователя администратора SYSDBA: masterkey.

C:\Program Files\Firebird\Firebird_2_5\bin>gsec -user SYSDBA -password masterkey
GSEC> add test1_usr -pw test1_pwd
Warning - maximum 8 significant bytes of password used
GSEC> quit
C:\Program Files\Firebird\Firebird_2_5\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE 'localhost:c:/yborm/examples/test1_db.fdb'
CON> page_size 8192 user 'test1_usr' password 'test1_pwd';
SQL> quit;

Применить сгенерированные скрипты SQL можно так:

C:\Program Files\Firebird\Firebird_2_5\bin>isql -u test1_usr -p test1_pwd localhost:c:/yborm/examples/test1_db.fdb < c:\yborm\examples\test_schema.sql
C:\Program Files\Firebird\Firebird_2_5\bin>isql -u test1_usr -p test1_pwd localhost:c:/yborm/examples/test1_db.fdb < c:\yborm\examples\ex2_schema.sql
C:\Program Files\Firebird\Firebird_2_5\bin>isql -u test1_usr -p test1_pwd localhost:c:/yborm/examples/test1_db.fdb < c:\yborm\examples\auth_schema.sql

В среде Ubuntu Linux, использование команды gsec - такое же, а вместо команды isql нужно использовать isql-fb:

$ isql-fb
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE '/var/lib/firebird/2.5/data/test1_db.fdb'
CON> page_size 8192 user 'test1_usr' password 'test1_pwd';
SQL> quit;
$ isql-fb -u test1_usr -p test1_pwd \
 localhost:/var/lib/firebird/2.5/data/test1_db.fdb < lib/orm/test/mk_tables.sql
$ isql-fb -u test1_usr -p test1_pwd \
 localhost:/var/lib/firebird/2.5/data/test1_db.fdb < examples/domain/mk_tables.sql
$ isql-fb -u test1_usr -p test1_pwd \
 localhost:/var/lib/firebird/2.5/data/test1_db.fdb < examples/auth/src/domain/auth_schema.sql