This file is in UTF-8 encoding.

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

Поддерживаются компиляторы Visual C++ (входит в состав Visual Studio) и MinGW.
Теоретически, любая версия Visual C++ начиная с Visual C++ 2003 должна работать.
Практически, Visual C++ 2008 Express Edition (бесплатная) точно работает,
а никакие другие версии не тестировались.  Что касается MinGW, то тестировалась
та версия, что идет в комлекте с Qt.
Оффициальные сборки собираются Visual C++, главным образом потому, что встроенный
обработчик падений поддерживает только Visual C++ под Windows.
Для неоффициальных сборок обработчик падений бесполезен, и включать его не надо,
потому как только тот, кто собрал данную сборку имеет символьные данные,
необходимые для того, чтобы перевести отчет о падении в читабельную форму.
В общем и целом, собрать Scan Tailor проще с MinGW, но вести разработку проще с
Visual C++.

Изначально этот документ писался в расчете только на MinGW, а дополнения,
касающиеся Visual C++ были добавлены позже, и помечены как [VC++].


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

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

1. CMake 2.6.x (протестировано с 2.6.2)
   Сайт: http://www.cmake.org
2. jpeg-6b
   Сайт: http://www.ijg.org/
   Нам нужен файл jpegsrc.v7.tar.gz или с похожим именем.
3. zlib
   Сайт: http://www.zlib.net/
   Нам нужен файл вида zlib-x.x.x.tar.gz, где x.x.x - номер версии.
4. libpng
   Сайт: http://www.libpng.org/pub/png/libpng.html
   Нам нужен файл вида libpng-x.x.x.tar.gz, где x.x.x - номер версии.
5. libtiff
   Сайт: http://www.remotesensing.org/libtiff/
   Из-за того, что libtiff обновляется редко, а дыры в нем находят часто, лучше
   всего будет его сразу же пропатчить.  В таком случае брать его нужно отсюда:
   http://packages.debian.org/source/sid/tiff
   Там и сам libtiff и патч для него.  Процесс наложения патча описан далее
   в этом документе.  Если вы не собираетесь распространять ваши сборки Scan
   Tailor'а и не собираетесь открывать им файлы из сомнительных источников,
   тогда можете и не патчить libtiff.
6. Qt 4.x.x (протестировано с Qt 4.5.0)
   Cайт: http://qt.nokia.com/
   На сайте: Download -> LGPL / Free -> Download Qt SDK for Windows
   Опцию "MinGW" в инсталляторе можно отключить, если собираетесь использовать
   Visual Studio.
7. Boost (протестировано с 1.38.0) и Boost Jam (протестированно с 3.1.17)
   Сайт: http://boost.org/
   Для Boost, качайте любой из предложенных файлов, если конечно знаете,
   чем тот или иной файл можно распаковывать.
   Для Boost Jam, берите файл с суффиксом "ntx86".
8. NSIS 2.x (протестировано с 2.42)
   Сайт: http://nsis.sourceforge.net/
9. [VC++]
   Понадобится сам Visual C++, который можно скачать отсюда:
   http://www.microsoft.com/Express/vc/


                                    Инструкции

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

2. Распаковать jpeg-6b, libpng, libtiff, zlib, boost, boost jam, и сам
   scantailor в директорию сборки.  В результате должна получиться примерно
   такая структура директорий:
   C:\build
     | boost_1_38_0
     | boost-jam-3.1.17-1-ntx86
     | jpeg-6b
     | libpng-1.2.31
     | scantailor-0.9.0
     | tiff-3.8.2
     | zlib-1.2.3
   
   Если брали версию Qt без инсталлятора, распаковываем ее сюда же.

   Если не знаете, чем распаковывать .tar.gz файлы, попробуйте вот этим:
   http://www.7-zip.org/

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

4. Если брали Qt с инсталлятором, устанавливаем ee, указав в инсталляторе чтобы
   скачал и устоновил MinGW.  Если без инсталлятора, то скачиваем инсталлятор
   MinGW с http://mingw.sourceforge.net/

5. Установить CMake.

6. [VC++]  Пропустите этот шаг.
   
   Теперь нужно сделать так, чтобы CMake видела директорию bin пакета MinGW
   в PATH.  Есть два альтернативных способа, как этого добиться:
   1.  Идем в Панель управления (-> Производительность и Обслуживание)
       -> Система -> Дополнительно -> Переменные среды, и добавляем в конец
       переменной Path что-то вроде: ";C:\MinGW\bin" (без кавычек).
   2.  Можно просто запускать CMake из Qt Command Prompt, которая сама добавит
       MinGW в PATH.  К сожалению, в этом случае придется указывать полный
       путь к CMake, вот так:
       C:\Program Files\CMake 2.6\bin\CMakeSetup.exe
       Просто CMakeSetup.exe не запустится, даже если вы при инсталляции
       CMake указали добавить ее в PATH.  Причина в том, что Qt Command Prompt
       собирает переменную PATH с нуля, игнорируя ее изначальное значение.
       Впрочем никто не мешает вам подредактировать файл qtvars.bat и добавить
       там директорию CMake в PATH.

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

   Директория исходников: C:\build\scantailor-0.9.0\packaging\windows\build-deps
   Директория сборки:     C:\build\scantailor-deps-build

   Жмем "Configure".  Выбираем тип проекта "MinGW Makefiles".  Если какие-то
   пути не были найдены, указываем их вручную и жмем "Configure" опять.
   Если все прошло нормально, кнопка "Generate" станет активной.
   Жмем на нее.  Имейте в виду, что иногда нужно нажимать "Configure" несколько
   раз, прежде чем кнопка "Generate" станет активной.
   [VC++]
   Выбираем свою версию Visual C++ (Visual Studio) вместо "MinGW Makefiles"

7. На этом шаге мы соберем зависимости Scan Tailor'а.  Этот шаг самый длинный
   (может занять несколько часов), но к счастью его нужно сделать только один раз,
   то есть вам не придется переделывать этот шаг для сборки других версий
   Scan Tailor'а.
   
   [VC++]
   Идем в C:\build\scantailor-deps-build и открываем файл
   "Scan Tailor Dependencies.sln".  Он откроется в Visual Studio.
   Выбераем желаемый тип сборки (Release, Debug, MinSizeRel, RelWithDebInfo)
   и делаем Build -> Build Solution.  Если не знаете, какой тип сборки
   выбрать, выбирайте Release.
   
   [MinGW]
   Запустить Qt Command Prompt из меню Пуск.
   Туда вводим следующее:

   C:
   cd C:\build\scantailor-deps-build
   mingw32-make 2> log.txt

   "2> log.txt" нужно затем, чтобы ошибки писались бы в файл, а не на экран.
   Этот файл поможет определить, что именно пошло не так.

   Когда этот шаг завершится, гляньте в файл log.txt чтобы убедиться, что
   все прошло как надо.  Если нет - то в конце файла будут ошибки (error).
   Предупреждения (warning) можно игнорировать.

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

   Директория исходников: C:\build\scantailor-0.9.0
   Директория сборки:     C:\build\scantailor-build

   Жмем "Configure".  Выбираем тип проекта "MinGW Makefiles".  Если какие-то
   пути не были найдены, указываем их вручную и жмем "Configure" опять.
   Если все прошло нормально, кнопка "Generate" станет активной.
   Жмем на нее.  Имейте в виду, что иногда нужно нажимать "Configure" несколько
   раз, прежде чем кнопка "Generate" станет активной.
   [VC++]
   Выбираем свою версию Visual C++ (Visual Studio) вместо "MinGW Makefiles"

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

   C:
   cd C:\build\scantailor-build
   mingw32-make 2> log.txt

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


                              Патчим libtiff

Эти инструкции предполагают, что вы взяли патч из Debian'а:
http://packages.debian.org/source/sid/tiff
Там вы найдете и оригинальные исходники libtiff и отдельный патч в формате
.diff.gz.  Имейте в виду, что Debian распространяет оригинальный архив
исходников libtiff внутри другого архива.  Нам нужен внутренний, и распаковать
его нужно в директорию сборки (C:\build).  Ихний патч тоже не простой - он
несет в себе еще несколько патчей, которые надо накладывать в определенном
порядке.  К счастью, у нас есть скрипт CMake, который сильно облегчает эту
работу.

Вот инструкции:

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

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

2. Скачать и распаковать сам патч.  В распакованном виде у него будет
   расширение ".diff".  Лучше скопировать его в директорию сборки (C:\build),
   чтобы CMake смог его найти автоматически.

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

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

   Директория исходников: C:\build\scantailor-0.9.0\packaging\windows\patch_libtiff
   Директория сборки:     C:\build\tiff-patch-dir

   Жмем "Configure".  Выбираем тип проекта "MinGW Makefiles".  Если какие-то
   пути не были найдены, указываем их вручную и жмем "Configure" опять.
   Если все прошло нормально, кнопка "Generate" станет активной.
   Жмем на нее.  Имейте в виду, что иногда нужно нажимать "Configure" несколько
   раз, прежде чем кнопка "Generate" станет активной.
   [VC++]
   Выбираем свою версию Visual C++ (Visual Studio) вместо "MinGW Makefiles"

5. Из Qt Command Prompt сделать следующее:

   C:
   cd C:\build
   cd tiff-patch-dir
   mingw32-make

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