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, то для 32-битных
сборок тестировалась та версия, что идет в комлекте с Qt, а для 64-битных -
TDM-GCC в 64-битной конфигурации.
Оффициальные 32-битные сборки собираются Visual C++, так как встроенный
обработчик падений поддерживает только Visual C++ под Windows.
Для неоффициальных сборок обработчик падений бесполезен, и включать его не надо,
потому как только тот, кто собрал данную сборку имеет символьные данные,
необходимые для того, чтобы перевести отчет о падении в читабельную форму.
Для 64-битных сборок на данный момент поддерживается только MinGW,
и как следствие эта версия идет без обработчика падений.
Если не знаете, какой компилятор использовать - используйте Visual C++ 2008
Express Edition, так как именно его автор использует больше всего,
и соответственно с ним меньше всего шансов получить проблемы при сборки.


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



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

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

1. CMake >= 2.8.4
   Сайт: http://www.cmake.org
   Внимание! Не устанавливайте CMake в "C:\Program Files (x86)\...",
   что будет значением по умолчанию на 64х-битных версиях Windows.
   Некоторые версии MinGW имеют проблемы со скобками в путях.
2. jpeg library
   Сайт: 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.7.4)
   Cайт: http://qt.nokia.com/
   На сайте: Download -> LGPL / Free -> Download Qt SDK for Windows
   Опцию "MinGW" в инсталляторе можно отключить, если собираетесь использовать
   Visual Studio или собирать с 64-битным MinGW.
7. Boost (протестировано с 1.47.0)
   Сайт: http://boost.org/
   Качайте boost в любом формате, при условии что вы знаете, как этот формат
   распаковывать.
8. NSIS 2.x (протестировано с 2.42)
   Сайт: http://nsis.sourceforge.net/
9. [VC++]
   Понадобится сам Visual C++, который можно скачать отсюда:
   http://www.microsoft.com/Express/vc/
   Не нужно брать самую последнюю версию - ищите именно версию 2008 Express Edition.
10.[MinGW64]
   Скачайте и установите 64-битную версию TDM-GCC отсюда:
   http://tdm-gcc.tdragon.net/
   Если у вас уже стоит другая версия MinGW, убедитесь что ее нет в PATH,
   иначе возможны конфликты.


   
                                    Инструкции

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

2. Распаковать jpeg-{версия}, libpng, libtiff, zlib, boost, boost jam, и сам
   scantailor в директорию сборки.  В результате должна получиться примерно
   такая структура директорий:
   C:\build
     | boost_1_38_0
     | jpeg-8с
     | 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.8\bin\cmake-gui.exe
       Просто cmake-gui.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'овские патчи к libtiff:
http://packages.debian.org/source/sid/tiff
Там вы найдете и оригинальные исходники libtiff (имя файла типа
tiff_3.9.4.orig.tar.gz) и набор патчей для него (имя файла типа
tiff_3.9.4-5.debian.tar.gz).  Скачайте оба и следуйте инструкциям:

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

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

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

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

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 файла и
   снести директорию "debian".
