Files
qt6-migration-pipeline/ARC_GIS_BUILD_REQUIREMENTS.md
T

4.9 KiB

ArcGIS Build Requirements Analysis

Overview

This document analyzes the requirements for building full ArcGIS-enabled Qt6 applications in the Qt6 migration pipeline.

Date: 2026-09-24
Branch: feature/lts-viewer-validation-testing-phase
Submodule: qt6-migration-pipeline/qt-migration-legatus/qt6-after/qt6-migrated-legatus


SDK Structure

Location: ./external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk/

Components Status

Component Status Location
Headers ✅ Present sdk/include/ (37K+ header files)
Linux x64 Libraries ✅ Present sdk/linux/x64/lib/
- libruntimecore.so ✅ 162MB Core runtime engine
- libEsriCommonQt.so ✅ 27MB Common Qt bindings
- libEsriRuntimeQt.a ✅ 86MB Static C++ API library
CMake Config ✅ Present sdk/ideintegration/ArcGISRuntime.cmake

CMake Targets Defined

The ArcGISRuntime.cmake module defines the following imported targets:

  • ArcGIS::Core - Core runtime (shared library)
  • ArcGIS::Cpp - C++ API (static library)

Missing Requirements for Full Builds

1. ArcGIS Runtime SDK License ⚠️

The ArcGIS Maps SDK for Qt is proprietary software from Esri:

  • Requires a valid license for production use
  • Must be obtained separately from Esri
  • Not included in this repository

2. Runtime Dependencies

For deployment, the following are needed:

  • No bin/ or plugins/ directory in SDK (Qt plugins not bundled)
  • Application must bundle required Qt plugins separately
  • Runtime library path must include /sdk/linux/x64/lib/

3. Docker Build Integration

The SDK must be mounted into Docker container during build:

-v /path/to/sdk:/workspace/external/ArcGIS

The install_arcgis.sh script:

  • Expects SDK at /workspace/external/ArcGIS
  • Creates symlink to /repo/external/ArcGIS/MapsSDK_Qt_300.0.0/...

Build Configuration

Enable ArcGIS Builds

./new_docker_build.sh --arcgis --group5

This will:

  • Set BUILD_ARCGIS=ON
  • Add ArcGIS SDK to CMAKE_PREFIX_PATH
  • Enable advancedSymbology library build
  • Link against ArcGIS::ArcGIS target

CMake Configuration

CMake expects the following prefix path:

-DCMAKE_PREFIX_PATH="...;/workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk;/usr/local"

Dependency Chain

advancedSymbology (Lts/Viewer/SituationMap/Symbology/)
  └── ArcGIS::ArcGIS (ArcGIS Runtime SDK)
      ├── libruntimecore.so (162MB)
      ├── libEsriCommonQt.so (27MB)
      └── libEsriRuntimeQt.a (86MB)

Lts/Plugins/AdvancedSymbology/
  ├── AsbDataPlugin → advancedSymbology
  ├── AsbSymbolProxyGuiPlugin → advancedSymbology
  └── AsbData → advancedSymbology

Key CMake Files

File Purpose
Lts/Viewer/SituationMap/Symbology/CMakeLists.txt Contains BUILD_ARCGIS conditional for advancedSymbology
Lts/Plugins/AdvancedSymbology/Data/CMakeLists.txt Links AsbData, AsbDataPlugin against advancedSymbology
Lts/Plugins/AdvancedSymbology/Gui/SymbolProxy/CMakeLists.txt Links AsbSymbolProxyGuiPlugin against advancedSymbology
cmake/FindArcGISRuntime.cmake Locates ArcGIS SDK (via ArcGISRuntime.cmake)

Current Status

Viewer-Only Builds (Without ArcGIS)

Component Status
LtsDataView ✅ Builds successfully
LtsDataViewTest ✅ Passes CTest (headless)
LtsReportDisplay ✅ Builds with KDReports
situationMapCommon ✅ Builds successfully
advancedSymbology ⚠️ NOT built (requires ArcGIS license)
Qt6 Deprecation Warnings ✅ Zero warnings

Full ArcGIS-Enabled Builds

To enable full ArcGIS functionality:

  1. ✅ SDK folder structure is complete
  2. ⚠️ Obtain ArcGIS Runtime SDK for Qt license from Esri
  3. ⚠️ Mount SDK into Docker build environment
  4. ⚠️ Build with --arcgis flag
  5. ⚠️ Ensure runtime library path includes ArcGIS libraries

Verification Commands

Check SDK Libraries

find ./external/ArcGIS -name "*.so" -o -name "*.a"

Build with ArcGIS Support

./new_docker_build.sh --arcgis --group5

Verify advancedSymbology Build

# Check if library was built
ls -la build4/lib/libadvancedSymbology.so

# Check CMake configure output for ArcGIS
grep -i "arcgis" build4/CMakeCache.txt

Conclusion

The SDK folder structure is complete for building ArcGIS-enabled applications. The only missing pieces are:

  1. Valid ArcGIS Runtime SDK license (must be obtained from Esri)
  2. Docker mount configuration for CI/CD pipelines

For viewer-only validation testing, ArcGIS is optional — the core Viewer module (LtsDataView, LtsReportDisplay, situationMapCommon) builds and tests successfully without it.