Кросс-платформенный проект Windows / Raspberry Pi с C ++, OpenCV и Gtk
Вступление
Эта статья принадлежит к серии статей о написании, построении и отладке приложения, написанного на C ++ , которое использует библиотеку Gtk для обработки пользовательского интерфейса, библиотеку OpenCV для захвата и обработки изображений с камеры, совместимую с основными платформами, Mac OS X , Linux и Windows и, в конечном итоге, работает на Raspberry Pi .
Основная статья этой серии находится здесь:
- Полноэкранное приложение OpenCV / GtK на C ++, работающее на Raspberry PI.
В этой статье обсуждается, как настроить Windows для получения источников, сборки и отладки такого проекта. Исходники проекта доступны здесь:
- https://github.com/cpp-tutorial/raspberry-cpp-gtk-opencv
Установить M2SYS
В Windows нет стандартных системных расположений для библиотек, как в Linux и Mac OS X. Следовательно, чтобы получить библиотеки Gtk и OpenCV , вам нужно использовать некоторую нестандартную процедуру, которая включает в себя установку специального диспетчера пакетов под названием pacman и специальной Linux-подобной среды разработки под названием MinGW .
Самый простой способ получить pacman и MinGW - использовать проект с открытым исходным кодом под названием MSYS2 . Перейдите на домашнюю страницу MSYS2 и загрузите установщик M2SYS, который лучше всего соответствует вашей системе (возможно, 64-разрядный, поскольку i686 на самом деле 32-битный).
Установите его со всеми параметрами по умолчанию в папку C:msys64
После установки у вас будет:
- Среда MSYS2 MSYS , где вы можете использовать pacman для установки компонентов.
- 64-разрядная среда MSYS2 MinGW, что означает Minimal GNU for Windows , где вы можете использовать все инструменты и библиотеки, установленные через pacman .
- Вы также получаете MSYS2 MinGW32 для доступа к 32-битным инструментам; вам не следует устанавливать их, если ваша система 64-битная.
Как объясняется в инструкциях по загрузке, первое, что нужно сделать, - это обновить базу данных пакетов. Откройте MSYS2 MSYS и введите следующую команду:
$ pacman -Syuu
Если вы столкнетесь с приведенным ниже сообщением, закройте окно MSYS2 MSYS с помощью мыши, откройте его снова и выполните ту же команду, пока она не завершится нормально.
предупреждение: завершите MSYS2 без возврата в оболочку и снова проверьте наличие обновлений предупреждение: например, закройте окно терминала вместо вызова exit
Если вы ищете конкретный пакет, вы можете использовать команду, подобную следующей. Предполагая, что вы ищете CMake :
$ pacman -Ss cmake
Создайте отличный Linux-подобный инструментарий
Вдохновленный идеей Алексея Павлова, я советую установить следующие пакеты и инструменты, чтобы у вас была среда разработки, очень похожая на ту, что присутствует на машинах Linux. С его помощью вы можете компилировать приложения для Windows с помощью инструментов Linux:
$ pacman -S base base-devel net-utils git ruby wget man $ pacman -S msys / openssh msys / vim msys / bc, nano msys / tmux $ pacman -S gzip zip распаковать msys / p7zip tar msys / tree $ pacman -S msys / winpty msys / ed msys / pwgen msys / zsh $ pacman -S mingw64 / mingw-w64-x86_64-jq $ pacman -S msys / screenfetch $ pacman -S mingw-w64-x86_64-toolchain $ pacman -S mingw64 / mingw-w64-x86_64-cmake
После загрузки и установки всех этих пакетов вы можете проверить, присутствуют ли они для тестирования некоторых из них. Для этого откройте 64-битную среду MSYS2 MingGW и проверьте несколько команд:
$ git --version $ make --version $ cmake --version $ gcc --version $ pkg-config --version
Смотрите также:
- Установка GCC и MYSYS2.
- Создайте отличный Linux-подобный инструментарий.
Установка Gtk и OpenCV
Вы можете установить библиотеки Gtk и OpenCV с помощью pacman в MSYS2 MSYS с помощью следующих команд:
$ pacman -S mingw64 / mingw-w64-x86_64-gtkmm3 $ pacman -S mingw64 / mingw-w64-x86_64-opencv
Сборка с MinGW64
Чтобы собрать проект, откройте 64-разрядную версию MSYS2 MinGW , найдите соответствующую папку (накопители сопоставлены с корневой папкой, например C:UsersmeDocumentDevelopment
будет /c/Users/me/Development
):
$ cd перейти / в / ваш / проект / папку $ git clone https://github.com/cpp-tutorial/raspberry-cpp-gtk-opencv.git $ cd малина-cpp-gtk-opencv сборка $ mkdir $ cd build $ cmake -G "Makefiles Unix" ../src/ $ make $ ./racapp.exe
Если вы хотите отлаживать с помощью gdb , вы можете использовать немного другую команду cmake
Если вы уже собрали проект, без колебаний удалите build
и создайте ее снова:
$ cd .. $ rm -rf build сборка $ mkdir $ cd build $ cmake -G "Файлы сборки Unix" -DCMAKE_BUILD_TYPE = Отладка ../src $ make $ gdb ./rascapp.exe
После этого вы в GDB . Чтобы сориентироваться, посмотрите инструкции по Linux.
Сделать инструменты MinGW доступными повсюду
По умолчанию MSYS2 устанавливает библиотеки и инструменты в папку C:Msys2MinGW64in
Добавьте его в PATH
среды PATH, чтобы все приложения могли найти инструменты:
Когда вы закончите, вы можете открыть командную строку Windows и проверить, доступны ли в ней те же инструменты:
$ pkg-config --version $ pkg-config gtkmm-3.0 --cflags --libs $ pkg-config opencv-3.0 --cflags --libs
Этот шаг не является строго необходимым, если вы собираетесь использовать Code :: Blocks , но это тоже не повредит.
Установка Code :: Blocks в Windows и настройка инструментария MSYS2
IDE по умолчанию в Windows - Visual Studio . Однако Visual Studio ожидает специального формата для отладки символов, отличного от формата, создаваемого gcc и g ++ в MinGW . В кроссплатформенном проекте, если вы не хотите делать свою жизнь невыносимой из-за сверхсложных процедур установки, лучше об этом не говорить.
Я выбрал Code :: Blocks, потому что:
- Он существует на всех трех основных платформах, поэтому вы можете использовать его везде, включая Raspberry Pi , с аналогичной конфигурацией.
- Он довольно популярен, так что вы можете поискать инструкции и поддержку сообщества.
- У него есть мастер установки Windows, который позаботится обо всех деталях конфигурации.
Процедура установки совершенно проста, по крайней мере, в Windows 10.
- Установите двоичную версию Code :: Blocks для Windows с официального сайта: http://www.codeblocks.org/downloads.
- Среди всех версий выберите обычную настройку (вы уже установили набор инструментов mingw на предыдущем шаге).
- Установите его со всеми параметрами по умолчанию.
- Запустить приложение
Если сообщений об ошибках нет, все готово. В противном случае посмотрите поиск неисправностей.
Создание с помощью Code :: Blocks
Самый простой способ - использовать CMake для подготовки для вас проекта Code :: Blocks. Предполагая, что вы уже клонировали проект в известном месте, и ваш 64-битный терминал MSYS2 MinGW уже там, это последовательность команд:
$ mkdir codeb $ cd codeb $ cmake -DCMAKE_BUILD_TYPE = Debug -G "CodeBlocks - Unix Makefiles" ../src/
Следуйте остальной процедуре из Code :: Blocks :
- В меню Файл → Открыть…
codeb
которую вы только что создали, иrascam.cbp
проекта rascam.cbp в ней (обратите внимание, что имя проекта такое же, как указано вCMakeLists.txt
). - Если хотите, перейдите в « Проект» → « Дерево проекта» и измените « Отображать папки как на диске» и « Скрыть имя папки» .
- Выберите один из исходных файлов и поместите на нем точку останова, щелкнув серую область.
- На панели инструментов выберите цель
rascapp
- На панели инструментов запустите отладчик.
- Он должен запуститься и остановиться в точке останова.
- Чтобы увидеть переменные, перейдите в Debug → Debugging windows → Watches .
Поиск проблемы
недействительный или поврежденный пакет (подпись PGP)
Иногда вы можете встретить следующее сообщение об ошибке при загрузке, обновлении или обновлении с помощью pacman :
(4/4) проверка целостности пакета [########################################################################## ##########################] 100% ошибка: jsoncpp: подпись от "Алексея Павлова (Alexpux)" является недействительным :: Файл /var/cache/pacman/pkg/jsoncpp-1.8.4-1-any.pkg.tar.xz - это поврежден (недействительный или поврежденный пакет (подпись PGP)).
Это временная проблема, связанная с недоступностью создания веб-сайтов, и вы можете решить ее, просто подождав (см. Обсуждение проблем с подписями от «Alexey Pavlov (Alexpux)»). Кроме того, вы можете отключить проверку подписи, отредактировав /etc/pacman.conf
(используйте Vim из MinGW64 ) и изменив следующую запись:
SigLevel = Никогда
Code :: Blocks не может найти компилятор
При запуске Code :: Blocks может пожаловаться, что не находит набор инструментов компилятора. Если вы установили его с MSYS2, как описано выше, это просто вопрос конфигурации:
- При запуске просто примите диалоговое окно, в котором вам нужно выбрать существующую цепочку инструментов.
- В главном меню откройте Настройки → Компилятор…
- В диалоговом окне найдите раздел « Глобальные настройки компилятора » и вкладку « Исполняемые файлы Toolchain».
- Убедитесь, что путь правильный. Если вы установили MSYS2 с параметрами по умолчанию, это должен быть
C:msys64mingw64
. - Также убедитесь, что все упомянутые программные файлы соответствуют существующим исполняемым файлам в этой папке.
- Примите все, и сделайте то же самое с Настройки → Отладчик…
Примечание. У меня возникла эта проблема, когда я установил Code :: Blocks с помощью mingw-setup . Я предполагаю, что он ожидает стандартной установки MinGW , а не MSYS2 .
Code :: Blocks не может сохранять конфигурацию
При закрытии приложения или при сохранении всех данных Code :: Blocks может пожаловаться, что не может сохранить конфигурацию, и отобразить сообщение об ошибке. Чтобы решить эту проблему:
- Обратите внимание на путь, по которому он пытается сохранить файл конфигурации.
- Создайте такой же путь и пустой файл с тем же именем.
- Сделайте этот файл доступным для записи.
Примечание. У меня возникла эта проблема, когда я установил Code :: Blocks с помощью mingw-setup . Я предполагаю, что он ожидает стандартной установки MinGW , а не MSYS2 .