-
Notifications
You must be signed in to change notification settings - Fork 1
Compiling the GeoDMS
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!
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:
Note: the exact layout of the Visual Studio Installer may differ from the screenshot above depending on your version.
Clone GeoDMS from the GitHub repository using:
git clone https://github.com/ObjectVision/GeoDMS.git
Then check out the main branch:
git checkout main
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.
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).
- 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-bitin the Qt/Qt x.x.x folder. No additional Build Tools under the Build Tools tab are required.

- In Visual Studio, install the
Qt Visual Studio Toolsextension via Extensions > Manage Extensions and search for Qt Visual Studio Tools. Click Install and close Visual Studio to start the extension installation.

- 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:
- Open the GeoDMS solution file
all22.slnin 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.

- 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\ippaccordingly in the GeoDMS local clone in file/geo/dll/GeoDLL.vcxprojfor the AdditionalIncludeDirectories and AdditionalLibraryDirectories properties.
- Open the solution file
all22.slnin Visual Studio. The Solution Explorer shows the various projects that make up GeoDMS, from which.dllfiles 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:
-
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:
- Rtc (Runtime Core Library)
- Sym (configuration syntax parser and producer of an internal representation of a model and its calculation rules)
- Tic (Tree Item Classes, Data Items, Units and related services)
- Stx (configuration syntax parser and producer of an internal representation of a model and its calculation rules)
- Stg (Storage Managers, providing a generic interface to GDAL, Proj, and native Storage Implementations, including .shp and .dbf, the TIFF lib, and ODBC connections)
- Clc (implementation of common operators)
- Geo (implementation of geometric and network operators, such as Dijkstra functions, raster convolution, polygon and arc operations)
- Shv (Viewer Components including TableViewer, MapViewer, and related Carets and Graphic Components)
- 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 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:

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:

Additionally, you can run LoadConfigFromPython.py, located in the LoadConfigFromPython project folder.
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())GeoDMS ©Object Vision BV. Source code distributed under GNU GPL-3. Documentation distributed under CC BY-SA 4.0.