Загрузка...

воскресенье, 11 июля 2010 г.

Сборка OpenCV средствами MinGW

В этой статье хотелось бы раскрыть нюансы сборки данной библиотеки. В моем случае эта процедура оказалась нетривиальной, с большим количеством граблей. Как известно, для последних версий OpenCV (на данный момент это 2.0 и больше) используется make-конфигуратор CMake. Далее я расскажу об этапах сборки и как с этим конфигуратором справиться. Прошу под кат.

Итак, что нам нужно.

  1. Исходники OpenCV под Windows. У меня они находятся в D:/libs/OpenCV-2.1.0/
  2. MinGW компилятор, заточенный под bada. У меня — D:\bada\1.0.0b3\Tools\Toolchains\Win32\bin. Вместо него, видимо, можно использовать обычный g++, если не требуется кросс-компиляция.
  3. Сам MinGW и его инклуды: D:/MinGW/includes
  4. CMake 2.6+
  5. Bash — намного удобнее виндового cmd.exe. Идет вместе с TortoiseGit. Установите, не пожалеете.
Когда это все установлено, запускаем CMake-GUI. В первом поле ввода "Where is the source code" указываем путь к распакованным исходникам OpenCV. Во втором поле ввода указываем каталог, где бы нам хотелось разместить файлы настроек проекта. Указываем любое понравившееся (см. рис 1).

Рис. 1 — Указываем каталоги

Нажимаем кнопку Configure. Если выскочил вопрос "Build directory does not exist,  should I create it?", соглашаемся. Потом. Должен открыться диалог, который предлагает выбрать средства компиляции. Можно выбрать в качестве IDE MS Visual Studio, на выходе получим проект для работы с библиотекой OpenCV под Виндой. У нас же стоит задача собрать библиотеку средствами MinGW.
Вся эта затея не будет казаться странной, если я скажу зачем она. Бинарники в стандартной поставке идут с оптимизацией и использованием SSE, что в моем случае недопустимо из-за того, что я использую их для своего проекта под Samsung Wave. Этот телефон, как ни странно, не поддерживает инструкции SSE, из-за чего некоторые функции библиотеки невозможно использовать. Это заставило меня пересобрать OpenCV.
Итак, в выпадающем меню выбираем "MinGW Makefiles", а также переключаем чекбокс на "Specify native compilers". Повторюсь, мне это нужно для того, чтобы использовать компилятор из поставки bada SDK. Нажимаем Finish.

Рис. 2 — Указываем пути к компилятору

Далее наверняка выскочит Error. Вот тут и начинаются танцы с дудками :) Чтобы четко понять, что от нас хотят, переключаемся на Advanced View (сверху над списком).


В таблице будут строчки, подсвеченные красным. С ними и надо разобраться. Исправляем вручную прежде всего те, в значении которых есть слова NOTFOUND, избирательно. Выставляем их. Нажимаем опять кнопку Configure. И так до тех пор, пока внизу в логах не появится строчка "Configuring done". Теперь еще раз проверяем все параметры и нажимаем в последний раз Configure, а потом Generate.
Насчет параметров. Моей целью было снять галочки напротив USE_SSE, USE_SSE2. 
С такими параметрами я выполнял компиляцию.


Возможно, потом придется внести поправки. Достаточно просто загрузить CMake-GUI, все настройки восстановятся.

Теперь переходим к нашему каталогу, в котором находится сгенерированный проект (/build-mingw). Переходим в консоль и выполяем команду cs-make.
cs-make — платформо-специфический make под bada. Для обычных случаев, используйте make. 

Если в ходе компиляции возникают ошибки (а они будут), то с ними нужно разобраться самостоятельно. Универсального совета не дам, действуйте по обстоятельствам: где-то надо добавить опцию компилятора (например, путь поиска инклудов), где-то ручками подправить исходники.

В конечном итоге, вы должны получить все необходимые бинарники. Если что-то упустил или по ходу возникли какие-то вопросы — спрашивайте в комментариях, постараюсь помочь чем могу.

    blog comments powered by Disqus


     
    ^

    Powered by BloggerCreative Commons License