Adds ArcGIS build requirements analysis
This commit is contained in:
1 file changed
+175
@@ -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.
|
||||||
Reference in new issue
Block a user