Adds ArcGIS build requirements analysis

This commit is contained in:
torsten committed 2026-09-24 17:37:16 +02:00
1 parent f0c370847d
commit 6d58ec031f
1 file changed
+175
+175
View File
@@ -0,0 +1,175 @@
# 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:
```bash
-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
```bash
./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:
```cmake
-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
```bash
find ./external/ArcGIS -name "*.so" -o -name "*.a"
```
### Build with ArcGIS Support
```bash
./new_docker_build.sh --arcgis --group5
```
### Verify advancedSymbology Build
```bash
# 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.