Сборка MUR IDE в Windows

Обратите внимание, что инструкции могут различаться в зависимости от используемых инструментов, окружения и версий софта. Сборка будет происходить в Visual Studio 2019 с компилятором MSVC. Аналогично можно и собрать, к примеру, с использованием Qt Creator и MinGW.

Подготовка

  • Необходимо, чтобы были установлены:

    • CMake
    • Git
    • Visual Studio, если он будет использоваться (кстати, есть Qt Visual Studio Add-in)
  • Про переменные CMake, которые надо будет указывать:

    • В основном это пути к библиотекам, и они будут зависеть от того, где устанавливались или собирались библиотеки. То есть, данные пути будут разными для конкретного окружения. Указанные здесь пути даны лишь для примера.
    • Самый простой способ задать переменные CMake - указывать их прямо в файле CMakeLists.txt, который лежит в корне проекта (добавив строчку вида set(LIB_DIR DIR_PATH)). При этом, не стоит коммитить в репозиторий такие изменения сборочной конфигурации, где жёстко прописаны пути, которые актуальны лишь для вашего окружения.
    • А лучше воспользоваться локальными настройками, это можно сделать в Visual Studio (Project / Cmake Settings for...), так и в Qt Creator (Projects / Build / CMake) через графические конфигураторы. Тогда изменения будут сохраняться в отдельный пользовательский конфиг (например CMakeLists.txt.user или CMakeSettings.json). Такой вариант предпочтительнее, но можно делать как удобнее.

Про vcpkg

  • Для загрузки, сборки и установки библиотек (ZeroMQ, OpenCV, Qt) можно воспользоваться пакетным менеджером vcpkg. Это может быть удобнее: не нужно скачивать и собирать каждую библиотеку, не нужно прописывать пути и всё будет делаться одной командой. Но при этом нужно помнить, что при такой установке все библиотеки будут собираться с нуля. В то же время, Qt и OpenCV предоставляют готовые сборки для Windows. Так что решение остаётся за вами.
  • Установка:
    • git clone https://github.com/Microsoft/vcpkg
    • cd vcpkg; ./bootstrap-vcpkg.bat
    • ./vcpkg integrate install - после этого все установленные библиотеки (теоретически) должны автоматически подхватываться при сборке, и не нужно будет указывать пути к библиотекам.
  • Пример использования: ./vcpkg install zeromq:x64-windows (надо не забывать про :x64-windows)

OpenCV

  • Важно, чтобы была включена поддержка ffmpeg.
  • Можно установить дистрибутив с сайта OpenCV или же собрать через vcpkg.
  • Указываем для CMake путь к OpenCV, если ставили готовую сборку:
    • set(OpenCV_DIR "D:/projects/opencv/build")

Qt 5

  • Теоретически можно установить из vcpkg, но это довольно долго и больно. Вместо этого, можно воспользоваться готовым дистрибутивом.
  • Загружаем дистрибутив Qt 5 с qt.io
  • Устанавливаем Qt (при установке нужно выбрать также компонент Qt WebEngine).
  • Внимательно смотрим на выбираемый компилятор: если собирать через MSVC - то он должен быть установлен (например, вместе с Visual Studio). Если сборка будет через MinGW (пример, в Qt Creator), то нужно не забыть выбрать в установщике и сам компилятор MinGW. Также надо выбрать соответствующую сборку Qt для конкретного компилятора.
  • Возможно, потребуется указать путь к Qt:
    • set(CMAKE_PREFIX_PATH "C:/Qt/5.15.1/msvc2019_64")

Собираем проект

  • Клонируем и открываем проект MUR IDE в Visual Studio: File / Open / CMake -> mur_ide/CMakeLists.txt
  • Собираем. Внимательно смотрим на возникающие ошибки, возможно где-то не был прописан правильный путь к некой библиотеке.
  • В Qt есть один нужный нам инструмент - windeployqt.exe, который автоматически копирует требуемые библиотеки Qt, необходимые для запуска. Путь к этой программе зависит от компилятора и версии Qt, например это может быть C:\Qt\5.15.1\msvc2019_64\bin. Открываем командную строку (кстати, после установки Qt из дистрибутива, в меню "пуск" появляется пункт вида Qt 5.15.1 (MSVC 2019 64-bit), который открывает консоль сразу в нужной директории). Команда будет иметь примерно следующий вид:
    • windeployqt.exe --qmldir "D:\projects\mur_ide\resources" "D:\projects\mur_ide\build\mur_ide.exe"
    • Обратите внимание на пути. Нужно указать аргумент --qmldir и для него путь к ресурам (чтобы скопировались нужные QML-компоненты, иначе не заработает), а также путь к собранному бинарнику.
  • Также может потребоваться скопировать библиотеки OpenCV и ZeroMQ. Это будет зависеть от их способа установки и наличия в PATH. Достаточно читать сообщения об ошибках, чтобы стало понятно какие ещё библиотеки требуется положить рядом с бинарником.
  • Нужно скопировать содержимое директории resources из исходников в такую же директорию рядом с собранным бинарником (обычно эту папку создаёт windeployqt).

Далее: Сборка MUR Simulator