We’re happy to introduce a technology that helps us build our software more effectively – NextGIS Borsch. NextGIS Borsch is a new build system for GIS software and a ready to use set of CMake-based libraries at Github. Borsch allows developer to simply include necessary libraries in the projects, setup libraries in flexible way, add them to installations. Borsch builds software and libraries the same way under several platforms (Linux, Windows, Mac OS).
Let’s have a look into details.
Modern software consists of the great number of building blocks – different libraries. Libraries have different dependencies and dependency tree can become rather complicated. To build program with dependencies you need to have all libraries in your system. Everything gets complicated if you need specific library version or special build with some nonstandard input parameters.
The problem of dependencies is less prominent in Unix systems compared to Windows. Under Windows if any library was updated all dependent libraries will need to be rebuild.
It would be nice to have a build system with the following features:
The problem: modern C/C++ build systems just partially meet above requirements. In GIS software the most modern and widely used build system is CMake. We decided to extend it with needed functionality and developed NextGIS Borsch.
In a nutshell NextGIS Borsch is a:
The build system uses Github as storage for libraries. But it is possible to modify system to use other version control system, supported by ExternalProject. You can clone separate libraries, build them and include them to the project like a local ones.
To activate build system you will only need three files that define new functions:
Also you will need files named FindExtXXX.cmake (where XXX is library name). They contain included library options.
You’ll only need four steps in your CMake script to use Borsch:
![]() |
![]() |
![]() |
More than 30 libraries (full list) are currently supported by Borsch, including:
We are building several products using libraries from Borsch:
NextGIS Borsch is open source and there are ways to contribute:
Together we can make building process faster and much more predictable, please join our effort and let us know what you think!
Repositories: https://github.com/nextgis-borsch
Scripts: https://github.com/nextgis-borsch/borsch
FOSS4G 2016 Presentation video: http://ftp5.gwdg.de/pub/misc/openstreetmap/FOSS4G-2016/foss4g-2016-1231-borsch_modern_build_system_for_c_c_gis_projects-hd.webm
Borsch image by Шнапс – Own work, CC0, https://commons.wikimedia.org/w/index.php?curid=14861271