Skip to content
Alexander edited this page Feb 7, 2014 · 10 revisions

Процесс сборки на Windows несколько нетривиален.

Установка всего необходимого.

Прежде всего нужно установить Visual Studio. Я использовал пробную версию Visual Studio 2013. Предыдущие версии поддерживают C++11 в меньшей степени, поэтому не гарантирую успешную сборку на них.

CMake можно скачать с официального сайта http://www.cmake.org/. Нужна версия не ниже 2.8.12, или не ниже 2.8.9 для тех, у кого она уже установлена и качать новую лень в большей степени, чем править минимальную версию в файлах. Необходимо, чтобы CMake прописался в PATH.

Git также берется с официального сайта http://git-scm.com/. При установке следует указать Use Git Bash only, checkout as is, commit as is.

За питоном тоже лезем на сайт http://python.org/, где берем дистрибутив. Работает с python 2.7, python 3.3.

Если есть желание использовать для сборки Ninja, его придется собирать самостоятельно. Замечу, что собирать ninja следует уже после всех действий, описанных в следующей секции. А так, все просто, клонируем репозиторий, запускаем bootstrap.py и получаем заветный ninja.exe, который нужно положить куда-нибудь в PATH, например в /usr/bin/ гита.

git clone [email protected]:martine/ninja.git && cd ninja
./bootstrap.py

OpenCV можно скачать с официального сайта http://opencv.org/. В случае если при сборке будут возникать ошибки связанные с opencv нужно собрать самостоятельно:

git clone [email protected]:Itseez/opencv.git && cd opencv
cmake -DCMAKE_INSTALL_PREFIX=/c/opencv -G Ninja
ninja && ninja install

Если без Ninja: cmake -DCMAKE_INSTALL_PREFIX="Путь установки" "Директория с OpenCVConfig.cmake" Далее в Visual studio нужно будет открыть и собрать сгенерированный проект.

В случае, если не указать -DCMAKE_INSTALL_PREFIX, установка будет произведена в подкаталог install.

Предварительные ласки пляски с бубном

Винда не была бы виндой, если бы не пришлось что-нибудь делать через задницу. Чтобы CMake смог опознать компилятор и проверить его, нужно сделать возможным сборку из git bash. Лезем в панель управления, свойства системы, дополнительные параметры, переменные среды. Правим переменную PATH, добавляем туда путь до питона (у меня C:\Python27).

Дальнейших действий делать не нужно, если использовать git не с http://git-scm.com/, а гитхабовский клиент под Windows, который также имеет git shell. Взять можно отсюда: http://windows.github.com/

Теперь лезем в директорию студии и копируем файл Common7/Tools/vsvars32.bat в директорию гита. Даем себе права на чтение и добавляем в конец

"C:\Program Files (x86)\Git\bin\sh.exe" --login -i

Путь может быть другим. Если есть желание, то можно натравить ярлык Git Bash на этот батник. Вся суть в том, чтобы запускать шелл с этим батником.

Конфигурация репозитория

Эта часть не отличается от остальных платформ. Нужно склонировать репозиторий, подгрузить субмодули и установить хуки. Все следующие действия необходимо делать в Git bash.

git clone [email protected]:it-workshop/caroline.git && 
git submodule update --init
./build/install_hooks.sh

Если необходимо обновить субмодули, следует выполнить:

git submodule update

Конфигурация сборки

Стоит собирать проект в отдельной директории (Лучше всего использовать директорию out, потому что она добавлена в игнор линтера), чтобы не мешать генерируемые файлы с исходными, в .gitignore они, конечно, перечисленны, но скорее всего не все. А мусор в репозитории никто не любит.

TODO(@alex-ac): Добавить директорию out в .gitignore.

mkdir out && cd out
cmake -DCMAKE_BUILD_TYPE=Debug -DOpenCV_DIR=/c/opencv -G Ninja ..

-G Ninja нужен только при использовании ninja, как и -DCMAKE_BUILD_TYPE=Debug, который нужен только если вы хотите включить дебажную сборку при сборке ниндзей. Тип сборки при использовании Visual Studio задается в самой студии. Вместо /c/opencv должен быть путь, в который была установлена opencv (директория с файлом OpenCVConfig.cmake).

По умолчанию cmake создает проект для установленной в системе Visual Studio.

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

Все достаточно просто, необходимо открыть файл caroline.sln и собрать проект ALL_BUILD.

Тесты можно запустить с помощью специального проекта RUN_TESTS, а можно просто выполнить unit_tests.exe, который позволяет также выбрать конкретные тесты для запуска и отображает результаты каждого теста.

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

Тут тоже все просто. Надо просто сказать:

ninja

Для запуска тестов используем:

ninja test

или

./unit_tests.exe