This file is in UTF-8 encoding.

Этот документ описывает процесс сборки Scan Tailor под Windows.

Ранние версии Scan Tailor поддерживали как Visual Studio так и MinGW.
С какого-то момента времени, поддержка MinGW была убрана, с целью снизить
усилия по сопровождению кода. Кроме того Scan Tailor начал использовать
некоторые возможности стандарта C++11, из-за чего версии Visual Studio
до 2013 перестали поддерживаться.


                            Скачиваем необходимый софт

Первым делом, нам понадобится нижеследующий софт.  Если не указано обратного,
всегда берите последние стабильные версии.

1. Visual Studio Express 2013 for Windows Desktop.
   Сайт: http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products
2. CMake >= 2.8.9
   Сайт: http://www.cmake.org
3. jpeg library
   Сайт: http://www.ijg.org/
   Нам нужен файл jpegsrc.v9.tar.gz или с похожим именем.
4. zlib
   Сайт: http://www.zlib.net/
   Нам нужен файл вида zlib-x.x.x.tar.gz, где x.x.x - номер версии.
5. libpng
   Сайт: http://www.libpng.org/pub/png/libpng.html
   Нам нужен файл вида libpng-x.x.x.tar.gz, где x.x.x - номер версии.
6. libtiff
   Сайт: http://www.remotesensing.org/libtiff/
   Из-за того, что libtiff обновляется редко, а дыры в нем находят часто, лучше
   всего будет его сразу же пропатчить.  В таком случае брать его нужно отсюда:
   http://packages.debian.org/source/sid/tiff
   Там и сам libtiff и набор патчей для него.  Процесс наложения патчей описан
   далее в этом документе.  Если вы не собираетесь распространять ваши сборки
   Scan Tailor'а и не собираетесь открывать им файлы из сомнительных источников,
   тогда можете и не патчить libtiff.
7. Qt5 >= 5.3 (протестировано с Qt 5.3.2, 5.4.1)
   Cайт: http://qt-project.org/
   Скачивать можно любую бинарную версию (используемый компилятор не важен),
   или даже версию только с исходниками. В любом случае будет сделана
   специальная сборка Qt, но в первом случае надо будет собирать не так
   много вещей, как во втором.
8. ActivePerl (нужно для сборки Qt5)
   Сайт: http://www.activestate.com/activeperl/downloads
   Рекомендуется ставить 32-битную версию. Будет или нет работать 64-битная -
   никто не проверял. При установке убедитесь, что опция "Add Perl to the PATH
   environment variable" включена.
9. Boost (протестировано с 1.56.0)
   Сайт: http://boost.org/
   Качайте boost в любом формате, при условии что вы знаете, как этот формат
   распаковывать.
10. Eigen3 (протестировано с 3.2.5)
   Сайт: http://eigen.tuxfamily.org/
11. NSIS 2.x (протестировано с 2.46)
   Сайт: http://nsis.sourceforge.net/

   
                                    Инструкции

1. Создать директорию сборки.  В ее полном пути не должно быть пробелов.
   Далее в документе будет предполагаться директория C:\build

2. Распаковать jpeg-{версия}, libpng, libtiff, zlib, boost, Eigen, и сам
   scantailor в директорию сборки.  В результате должна получиться примерно
   такая структура директорий:
   C:\build
     | boost_1_56_0
     | eigen-eigen-bdd17ee3b1b3
     | jpeg-9
     | libpng-1.6.2
     | scantailor-0.9.11
     | tiff-4.0.2
     | zlib-1.2.8
   
   Если брали версию Qt без инсталлятора, распаковываем ее сюда же.
   В противном случае ставим Qt в директорию, предлагаемую инсталлятором.
   ВАЖНО: инсталлятору нужно указать, чтобы ставил также и исходники
   (Source Components).
   
   Установите также Visual Studio и ActivePerl.
   
   Если не знаете, чем распаковывать .tar.gz файлы, попробуйте вот этим:
   http://www.7-zip.org/
   
3. Установить Visual Studio, ActivePerl и CMake.

4. Создать там еще пару директорий:
     | scantailor-build
     | scantailor-deps-build

5. Запустить CMake и указать следующее:

   Where is the source code: C:\build\scantailor-0.9.11\packaging\windows\build-deps
   Where to build the binaries: C:\build\scantailor-deps-build

   Жмем "Configure".  Выбираем тип проекта "Visual Studio 12" или
   "Visual Studio 12 Win64" для 64-битной сборки. Имейте в виду, что 64-битную
   сборку можно собрать только на 64-битной версии Windows. Visual Studio 12 -
   это то же самое, что Visual Studio 2013. Если какие-то пути не были найдены,
   указываем их вручную и жмем "Configure" опять. Если все прошло нормально,
   кнопка "Generate" станет активной. Жмем на нее. Имейте в виду, что иногда
   нужно нажимать "Configure" несколько раз, прежде чем кнопка "Generate"
   станет активной.

6. На этом шаге мы соберем зависимости Scan Tailor'а.  Этот шаг самый длинный
   (может занять несколько часов), но к счастью его нужно сделать только один раз,
   то есть вам не придется переделывать этот шаг для сборки других версий
   Scan Tailor'а.
   
   Идем в C:\build\scantailor-deps-build и открываем файл
   "Scan Tailor Dependencies.sln". Он откроется в Visual Studio.
   ВАЖНО: Установите тип сборки в RelWithDebInfo. Если оставите Debug
   (выбор по умолчанию), ваши сборки не будут запускаться на других
   компьютерах. Несмотря на выставленный RelWithDebInfo, некоторые библиотеки
   (Qt, boost) будут собраны и в отладочной и в оптимизированной конфиругации.
   При сборке самого Scan Tailor'а, нужная конфигурация библиотек будет выбрана
   автоматически.
   
   Теперь делаем Build -> Build Solution
   
   Убедитесь, что сборка прошла успещно, то есть количество ошибок (errors)
   должно быть нулевым. На предупреждения (warnings) можно не обращать внимания.   

7. Опять запускаем CMake и указываем следующее:

   Where is the source code: C:\build\scantailor-0.9.11
   Where to build the binaries: C:\build\scantailor-build

   Жмем "Configure", потом "Generate" - так же, как на шаге 5.

8. Теперь соберем сам Scan Tailor. При повторной сборки той же версии
   (возможно измененной), начинать можно сразу с этот шага (он же и последний).
   Для сборки другой версии, начинаем с шага 7.
   
   Идем в C:\build\scantailor-build и открываем файл "Scan Tailor.sln".
   Он откроется в Visual Studio. Выбераем желаемый тип сборки. Сборки типа
   Debug не будут запускаться на других компьютерах.
   
   Теперь делаем Build -> Build Solution

   Если все прошло как надо, в директории C:\build\scantailor-build появится
   готовый файл инсталлятора, под именем scantailor-VERSION-install.exe, где
   вместо VERSION будет версия сборки, которая берется из файла version.h
   в корне дерева исходников.


                              Патчим libtiff

Эти инструкции предполагают, что вы взяли Debian'овские патчи к libtiff:
http://packages.debian.org/source/sid/tiff
Там вы найдете и оригинальные исходники libtiff (имя файла типа
tiff_4.0.2.orig.tar.gz) и набор патчей для него (имя файла типа
tiff_4.0.2-6.debian.tar.gz). Скачайте оба и следуйте инструкциям:

1. Скачать и установить утилиту коммандной строки Patch:
   http://gnuwin32.sourceforge.net/packages/patch.htm

   Лучше берите версию с инсталлятором.  В этом случае CMake сможет
   самостоятельно найти путь к patch.exe

2. Распаковать оригинальные исходники libtiff в C:\build, чтобы получилась
   такая структура директорий:
   C:\build
     | tiff-4.0.2
     +-- build
       | config
       | contrib
       | ...

   Набор патчей распаковываем внутрь директории "tiff-*.*.*", чтобы получить
   директорию "debian" на одном уровне с "build", "config" и "contrib".

3. Создать еще одну поддиректорию в C:\build
   Назовем ее "tiff-patch-dir".

4. Запустить CMake и указать следующее:

   Where is the source code: C:\build\scantailor-0.9.11\packaging\windows\patch_libtiff
   Where to build the binaries: C:\build\tiff-patch-dir

   Жмем "Configure", затем "Generate", как описано в предыдущей секции, пункт 5.

5. Идем в C:\build\tiff-patch-dir и открываем файл "patch_libtiff.sln".
   Он откроется в Visual Studio. Тип сборки в данном случае значения не имеет.
   
   Теперь делаем Build -> Build Solution

   Если ошибок не было, значит вы успешно пропатчили libtiff.  Если когда-либо
   вам понадобится пропатчить его снова, сначала придется привести его в
   исходное состояние, то есть заново распаковать его из .tar.gz файла и
   снести директорию "debian".
