NextGIS Borsch 1.0

Мы рады поделиться нашей новой технологией, облегчающей жизнь разработчика программного обеспечения ГИС, — NextGIS Borsch. Борщ — это новая система сборки компилируемого программного обеспечения ГИС на базе CMake и набор подготовленных библиотек на Github. Борщ позволяет разработчику легко подключить необходимые библиотеки в свои продукты, гибко их настраивать, включать в состав своих инсталляторов. Результатом работы борща являются единообразно собранные программы и библиотеки сразу под несколько платформ (Linux, Windows, Mac OS).

А теперь подробнее…

Введение

Современное программное обеспечение включает в свой состав большое количество программных библиотек. Это кирпичи из которых создаются программы. Библиотеки имеют различные зависимости, которые тоже могут иметь зависимости, таким образом дерево библиотек может быть довольно сложным. Для сборки ПО необходимо иметь все библиотеки в системе. Все еще более усложняется если есть требования к версиям библиотек.

Проблема зависимостей не стоит так остро в Unix системах, однако в Windows, если библиотека обновилась, придется пересобирать все библиотеки, которые от неё зависят.

В идеале система сборки должна иметь следующие возможности и свойства:

  1. Кроссплатформенность (работа в Linux, Windows, Mac OS).
  2. Простота подключения библиотек. Если в системе уже имеется необходимая библиотека, то должна подключаться она, если её нет, то она должна тут же получаться из Интернет.
  3. Если какая-то из библиотек обновилась, то система сборки должна это отслеживать.
  4. Автоматическое разрешение зависимостей.
  5. По всему дереву зависимостей должны передаваться настройки состава и параметров сборки библиотек от верхнего проекта вниз.
  6. Дополнительно, легкая подготовка библиотеки для использования в системе сборки.

Проблема: современные системы сборки для С/С++ не отвечают в полной мере этим требованиям. Наиболее современная и распространенная в ПО ГИС система сборки — это CMake. Мы решили дополнить ее необходимыми возможностями и сделали NextGIS Borsch.

Что это?

NextGIS Borsch — это:

  1. Набор дополнений для CMake решающих проблемы зависимостей и конфигурирования.
  2. Специально подготовленные библиотеки готовые к использованию.

Система строится вокруг Github. Однако можно настроить систему для работы и с другой системой контроля версий, поддерживаемой функцией ExternalProject CMake. Также можно склонировать отдельные библиотеки, собрать их и указывать в качестве локальных.

Использование

Для работы системы сборки необходимо подключить в скрипт сборки три файла:

  1. FindAnyProject.cmake;
  2. FindExtProject.cmake;
  3. ExternalProject.cmake (исправленный оригинальный файл из состава CMake).

В подключаемых файлах определяются необходимые функции. Также понадобятся файлы FindExtXXX.cmake (где ХХХ — имя библиотеки) в которых содержаться особенности для каждой конкретной библиотеки.

В самом проекте нужно выполнить простых четыре шага:

  1.  Установить путь поиска скриптов Борща:
    set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
  2. Подключить основной файл:
    include(FindAnyProject)
  3. Указать необходимые библиотеки:
    find_anyproject(TIFF REQUIRED)
  4. Слинковать с внешними библиотеками:
    target_link_extlibraries(${LIB_NAME})

Состав подготовленных библиотек

На текущий момент мы подготовили более 30 основных библиотек (полный список) для использования в системе сборки, в том числе:

  • proj4
  • geos
  • gdal
  • zlib
  • json-c
  • libpq
  • tiff
  • geotiff и др.

С использованием подготовленных библиотек мы уже собираем:

Как я могу поучаствовать?

NextGIS Borsch это открытый проект и мы будем рады и признательны участию. Вот как можно поучаствовать:

  • Попробовать применить наш подход в своей системе сборки
  • Попробовать включить в свою сборку (на CMake) одну из наших библиотек
  • Подготовить и прислать нам библиотеку, которой еще нет в общем списке

Совместно мы могли бы значительно улучшить стабильность и скорость выпуска ПО для всех, присоединяйтесь и дайте нам знать что получается!

Ссылки

Репозиторий: https://github.com/nextgis-borsch

Скрипты: https://github.com/nextgis-borsch/borsch

Презентация NextGIS Borsch на FOSS4G 2016: http://ftp5.gwdg.de/pub/misc/openstreetmap/FOSS4G-2016/foss4g-2016-1231-borsch_modern_build_system_for_c_c_gis_projects-hd.webm

Фото с борщом: Шнапс — Own work, CC0, https://commons.wikimedia.org/w/index.php?curid=14861271

Обсуждение закрыто.