Compiling the GeoDMS - ObjectVision/GeoDMS GitHub Wiki

This page describes how to compile GeoDmsRun.exe from source on Windows. The process is bound to change through an ongoing effort to make the source code more accessible to the open-source community. The compilation is performed using Microsoft Visual Studio (2022), which can be downloaded here. During the installation of VS2022, make sure to install the latest versions of additional components:

image

This document is written as a chronological guide.

clone GeoDMS from Github

Clone GeoDMS from the Github repository.

setting up external dependencies

vcpkg: boost, cgal, gdal, geos, OpenSSL and pybind11

Dependencies can be installed using the open-source package manager vcpkg. However, for Visual Studio 2022 and newer, vcpkg can be installed using Visual Studio Installer, which installs vcpkg in C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg. GeoDMS makes use of manifest mode, using vcpkg.json in the root directory of the repository. When compiling GeoDMS using the steps on this page, vcpkg.exe should be used as a package manager for missing dependencies. To ensure that Visual Studio 'knows' where to get these missing dependencies, vcpkg has to be properly integrated into the system. In order to do this:

  • Open a command-prompt in the install location of vcpkg, e.g. C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg and issue the command: vcpkg.exe integrate install. This should now make vcpkg available, and dependencies should begin to download when you start compiling.

image

In order for vcpkg to properly build the python bindings make sure that you either have a working python3 version installed and available over the command line or make sure your Windows username does not contain spaces here is a tutorial on how to change it in case it does contain spaces.

Intel IPP

  • Download the Intel® oneAPI Base Toolkit here.
  • During the setup, manually choose which component to install. Here, only select the Integrated Performance Primitives (IPP) library.
  • [Optional] In case of installing the IPP library to a custom location, adjust the paths accordingly in the GeoDMS local clone in file /geo/dll/GeoDLL.vcxproj for AdditionalIncludeDirectories and AdditionalLibraryDirectories properties.

GeoDMSGui

  • Download and install the latest stable release stable release of Qt (version 6.8.0 as of January 2025), using the Qt installer. You can deselect all components, except MSVC 2022 64-bit and Qt WebEngine, from the extensions for the specific version you want. This will take a while.

  • In Visual Studio (2022), install the Qt Visual Studio Tools extension. When you click install, the installation will start when you close Visual Studio. image

  • Then make sure to add the installed Qt version using Tools>Options>Qt>Versions. Then click Add and click the ... to open the file browser. Here, navigate to qmake.exe: i.e. C:\Qt\6.8.0\msvc2019_64\bin\qmake.exe.

  • Also, for the project properties, make sure the Qt version is set to the installed version. For this, go to the solution explorer > right-click on 'GeoDmsGuiQt', select properties at the bottom, go to Qt Project Settings, and set the 'Qt Installation' value to the installed Qt version from the previous step. image

building the GeoDMS DLLs

Open the solution file geodms/trunk/all22.sln in Microsoft Visual Studio (2022). You see that GeoDMS consists of various projects from which we will create .dll files. There are four build configurations: a Release and Debug version in both x64 and Win32. Use ctrl-shift-b to build the whole solution, or alternatively follow these steps as a roadmap to build GeoDmsRun.exe:

  1. Rtc (Runtime Core Library)
  2. Sym (configuration syntax parser and producer of an internal representation of a model and its calculation rules.)
  3. Tic (Tree Item Classes, Data Items and Units and related services.)
  4. Stx (configuration syntax parser and producer of an internal representation of a model and its calculation rules.)
  5. Stg (Storage Managers, providing a generic interface to GDAL, Proj, and native Storage Implementations including .shp and .dbf the TIFF lib, and ODBC connections.)
  6. Clc (implementation of common operators)
  7. Geo (implementation of geometric and network operators, such as Dijkstra functions, raster convolution, polygon and arc operations)
  8. Shv (Viewer Components (TableViewer, MapViewer) and related Carets, and Graphic Components.)
  9. And finally: GeoDmsRun.exe, and GeoDmsGuiQt.exe

All build products will be placed in the bin folder depending on the chosen build configuration; for instance, the GeoDmsRun.exe file may reside in the: geodms/bin/Release/x64 folder.

Python bindings (work in progress)

Python bindings are being developed in the main development git branch (currently: v14). The GeoDmsPython project produces the required Python3 bindings using pybin11. First, make sure Python 3.10 or above is installed on your system, which can be downloaded here. Next, make sure pybind11 is installed using the command:

vcpkg install python3 --triplet x64-windows
vcpkg install pybind11 --triplet x64-windows

Then, in the GeoDmsPython project properties, make sure that the included path refers correctly to your vcpkg python locations

  • C/C++ -> Additional Include Directories: image

If all is set up, GeoDmsPython project can be built without errors; the output will be named geodms.pyd in the output folder (python dynamic module).

Now open a terminal in the build folder where geodms.pyd is located and type "python" which will start up python in command line mode. To test the geodms module, import the version function:

from geodms import version

And evaluate:

version()

Which should return a proper version string, which depends on the build time and type: image

Additionally, you can run LoadConfigFromPython.py, which is located in the LoadConfigFromPython project folder.

Native Linux compilation (work in progress)

Native Linux compilation is being prepared in the linux_gcc branch.

The steps that I did to get somewhere are:

  • Install WSL (Ubuntu) and set ssh on port 23
sudo apt update
sudo apt upgrade
sudo apt install net-tools
cd /etc/ssh/sshd_config
vi sshd_config ;
sudo service ssh restart
  • install gcc and vcpkg
sudo apt install g++ gdb make ninja-build rsync zip
sudo apt install vcpkg
cd /mnt/c/vcpkg/scripts/buildsystems
./bootstrap-vcpkg.sh
vcpkg install boost --triplet x64-linux
vcpkg integrate install
⚠️ **GitHub.com Fallback** ⚠️