Compiling the GeoDMS - ObjectVision/GeoDMS GitHub Wiki

This page describes how to compile GeoDmsRun.exe from source on Windows 10, Windows 11 and up. The process is bound to change through an ongoing effort to make the source code more accessible to the open-source community. This document is written as a chronological guide. Are you stuck or encounter incomplete information? Feel free to open an issue!

Install Microsoft Visual Studio (2022) Community edition

Our recommended compilation platform is Microsoft Visual Studio (2022) community edition, which can be downloaded here. Make sure the "Desktop development with C++" is installed:

image

Get the GeoDMS source code

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 online installer here.
  • Run the installer and select "Custom Installation" and click Customize. Make sure Integrated Performance Primitives (IPP) is selected and unselect all other options components.
  • [Optional] In case of installing the IPP library to a custom location, adjust the paths C:\Program Files (x86)\Intel\oneAPI\ipp accordingly in the GeoDMS local clone in file /geo/dll/GeoDLL.vcxproj for AdditionalIncludeDirectories and AdditionalLibraryDirectories properties.

Install the QT Gui framework (Optional for GeoDMSGuiQt)

  • Make sure you have created a QT user account here, this is needed later on in the installation process.

  • Download and install the latest stable release stable release of Qt (version 6.9.0 as of May 2025), using the Qt installer. You can deselect all components, except MSVC 2022 64-bit in the Qt/Qt x.x.x folder. No additional Build Tools under the Build Tools tab are required.

image

  • In Visual Studio (2022), install the Qt Visual Studio Tools extension using menu: Extensions > Manage Extensions and search for Qt Visual Studio Tools. Click install and close Visual Studio in order to start the extension installation.

    image

  • Restart Visual Studio (2022). Then make sure to add the installed Qt version using Tools>Options>Qt>Qt Versions. Then click Add and click the ... to open the file browser. Here, navigate to qmake.exe: e.g. C:\Qt\6.9.0\msvc2019_64\bin\qmake.exe:

image
  • Open the GeoDMS solution file all22.sln in Visual Studio (2022).

  • In the Solution Explorer right-click GeoDmsGuiQt > click Properties, go to Qt Project Settings and in the Qt Installation field make sure the correct Qt version is set. To do 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 GeoDMS

  • 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.

  • We recommend for an initial build to use settings: Release mode and x64, which can be configured in the top center of Visual Studio (2022) (below Build / Debug / Test menu items):

image
  • Right-click GeoDmsRun from the Solution Explorer window and click "Set as Startup Project". In order to build GeoDmsRun either go to option: Build > Build Solution or use the hotkey Ctrl-Shift-B

  • (optional) Or alternatively, right-click each individual component of GeoDMS and select Build in the following order:

TODO: add unload / reload information

  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, 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

Depending on the chosen build configuration, all build products will be placed in the bin folder; 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 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.

Distribution: steps to produce a wheel file

Folder structure should look as follows:

โ”œโ”€โ”€ geodms/
โ”‚   โ”œโ”€โ”€ gdaldata
โ”‚   โ”œโ”€โ”€ proj4data
โ”‚   โ”œโ”€โ”€ geodms.pyd
โ”‚   โ”œโ”€โ”€ geos.dll
โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”œโ”€โ”€ zstd.dll
โ”œโ”€โ”€ MANIFEST.in
โ”œโ”€โ”€ setup.py

With MANIFEST.in containing the following includes:

recursive-include . *

And setup.py containing the following code:

from setuptools import setup, Extension
import os
from setuptools.command.install import install

class CustomInstall(install):
    def run(self):
        install.run(self)

setup(
    name="geodms",
    version="17.0.3",
    packages=["geodms"],
    include_package_data=True,
    install_requires=[],
    cmdclass={'install': CustomInstall},
)

Make sure the setuptools and wheel module are installed:

pip install wheel
pip install setuptools

Build the wheel: python setup.py bdist_wheel

Test wheel installation: pip install ./dist/geodms-17.0.3-py3-none-any.whl

Test code:

from geodms import geodms

print(geodms.version())

Native Linux compilation (work in progress)

Native Linux compilation is being prepared in the linux_gcc branch. If you don't want to follow this path for now, you can unload the rtc_linux project in the solution explorer.

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** โš ๏ธ