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/orplugins/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
advancedSymbologylibrary build - Link against
ArcGIS::ArcGIStarget
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:
- ✅ SDK folder structure is complete
- ⚠️ Obtain ArcGIS Runtime SDK for Qt license from Esri
- ⚠️ Mount SDK into Docker build environment
- ⚠️ Build with
--arcgisflag - ⚠️ 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:
- Valid ArcGIS Runtime SDK license (must be obtained from Esri)
- 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.