Skip to content

Compiling the GeoDMS

Jip Claassens edited this page Apr 2, 2026 · 95 revisions

This page describes how to compile GeoDms from source on 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 Community edition

Our recommended compilation platform is Microsoft Visual Studio 2026 Community edition, which can be downloaded here. Make sure the "Desktop development with C++" workload is installed:

image

Note: the exact layout of the Visual Studio Installer may differ from the screenshot above depending on your version.

Get the GeoDMS source code

Clone GeoDMS from the GitHub repository using:

git clone https://github.com/ObjectVision/GeoDMS.git

Then check out the main branch:

git checkout main

Setting up external dependencies

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

Dependencies can be installed using the open-source package manager vcpkg. For Visual Studio 2026, vcpkg can be installed using the Visual Studio Installer, which installs vcpkg in C:\Program Files\Microsoft Visual Studio\2026\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 vcpkg install location, e.g. C:\Program Files\Microsoft Visual Studio\2026\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 Python 3 version installed and available on the command line, or make sure your Windows username does not contain spaces (here is a tutorial on how to change it if it does).


Install the QT Gui framework (Optional for GeoDMSGuiQt)

  • Make sure you have created a Qt account here, as this is required during the installation process.
  • Download and install the latest stable release of Qt 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, install the Qt Visual Studio Tools extension via Extensions > Manage Extensions and search for Qt Visual Studio Tools. Click Install and close Visual Studio to start the extension installation.

image

  • Restart Visual Studio. Then add the installed Qt version via Tools > Options > Qt > Qt Versions. Click Add and navigate to qmake.exe, e.g. C:\Qt\6.x.x\msvc2022_64\bin\qmake.exe:
image
  • Open the GeoDMS solution file all22.sln in Visual Studio.
  • In the Solution Explorer, right-click GeoDmsGuiQt > Properties > Qt Project Settings, and set the Qt Installation field to the Qt version added in the previous step.

image

Intel IPP

  • Download the Intel® oneAPI Base Toolkit online installer here.
  • Run the installer and select "Custom Installation". Make sure Integrated Performance Primitives (IPP) is selected and deselect all other components.
  • [Optional] If the IPP library is installed 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 the AdditionalIncludeDirectories and AdditionalLibraryDirectories properties.

Building GeoDMS

  • Open the solution file all22.sln in Visual Studio. The Solution Explorer shows the various projects that make up GeoDMS, from which .dll files will be created.
  • We recommend using Release mode and x64 for an initial build, which can be configured in the toolbar below the Build / Debug / Test menu:
image
  • Right-click GeoDmsRun in the Solution Explorer and click "Set as Startup Project". To build GeoDmsRun, go to Build > Build Solution or use the hotkey Ctrl+Shift+B.

  • Alternatively, you can build each component individually by right-clicking it in the Solution Explorer and selecting Build, in the following order:

  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 including TableViewer, MapViewer, and related Carets and Graphic Components)
  9. GeoDmsRun.exe and GeoDmsGuiQt.exe

Depending on the chosen build configuration, all build products will be placed in the bin folder, for instance geodms/bin/Release/x64.

When first compiling, you'll probably get an error about version numbers. If so:

In Visual Studio, go to View > Terminal and type:

.\BuildSignAndCreateSetup.bat

Here you'll be prompted with a question to "write the latest version number and date to the header". Pres Y

Then break the process by pressing Ctrl-C, and confirming by entering Y with an enter. Then the error should be fixed when restarting the build process.

Python bindings (work in progress)

Python bindings are being developed in the main branch. The GeoDmsPython project produces the required Python 3 bindings using pybind11. 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 commands:

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 correctly, the GeoDmsPython project can be built without errors. The output will be named geodms.pyd in the output folder (a Python dynamic module).

Open a terminal in the build folder where geodms.pyd is located and start Python in command-line mode by typing python. To test the geodms module, import and evaluate the version function:

python
from geodms import version
version()

This should return a version string depending on the build time and type:

image

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

Distribution: steps to produce a wheel file

The folder structure should look as follows:

├── geodms/
│   ├── gdaldata
│   ├── proj4data
│   ├── geodms.pyd
│   ├── geos.dll
│   ├── ...
│   ├── zstd.dll
├── MANIFEST.in
├── setup.py

With MANIFEST.in containing:

recursive-include . *

And setup.py containing:

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="x.x.x",
    packages=["geodms"],
    include_package_data=True,
    install_requires=[],
    cmdclass={'install': CustomInstall},
)

Make sure the setuptools and wheel modules are installed:

pip install wheel
pip install setuptools

Build the wheel:

python setup.py bdist_wheel

Test wheel installation:

pip install ./dist/geodms-x.x.x-py3-none-any.whl

Test code:

from geodms import geodms
print(geodms.version())

Clone this wiki locally