Error compiling Cesium for Unreal v2.10.0 on 5.4.2

Hi.
We recently ran into trouble trying to get Cesium for Unreal to work in a new project.
The problems start here:

2>[Upgrade]
2>[Upgrade] Using backward-compatible include order. The latest version of UE has changed the order of includes, which may require code changes. The current setting is:
2>[Upgrade]     IncludeOrderVersion = EngineIncludeOrderVersion.Oldest
2>[Upgrade] Suppress this message by setting 'IncludeOrderVersion = EngineIncludeOrderVersion.Latest;' in SmartSpatialEditor.Target.cs.
2>[Upgrade] Alternatively you can set this to 'EngineIncludeOrderVersion.Latest' to always use the latest include order. This will potentially cause compile errors when integrating new versions of the engine.
2>[Upgrade]
2>[Adaptive Build] Excluded from CesiumRuntime unity file: CalcBounds.cpp, Cesium3DTileset.cpp, Cesium3DTilesetRoot.cpp, CesiumActors.cpp, CesiumBingMapsRasterOverlay.cpp, CesiumBoundingVolumeComponent.cpp, CesiumCamera.cpp, CesiumCameraManager.cpp, CesiumCartographicPolygon.cpp, CesiumCreditSystem.cpp, CesiumCreditSystemBPLoader.cpp, CesiumCustomVersion.cpp, CesiumDebugColorizeTilesRasterOverlay.cpp, CesiumEllipsoid.cpp, CesiumEllipsoidFunctions.cpp, CesiumEncodedFeaturesMetadata.cpp, CesiumEncodedMetadataConversions.cpp, CesiumEncodedMetadataUtility.cpp, CesiumFeatureIdAttribute.cpp, CesiumFeatureIdSet.cpp, CesiumFeatureIdTexture.cpp, CesiumFeaturesMetadataComponent.cpp, CesiumFlyToComponent.cpp, CesiumGeoreference.cpp, CesiumGlobeAnchorComponent.cpp, CesiumGlobeAnchoredActorComponent.cpp, CesiumGltfComponent.cpp, CesiumGltfPointsComponent.cpp, CesiumGltfPointsSceneProxy.cpp, CesiumGltfPrimitiveComponent.cpp, CesiumGltfTextures.cpp, CesiumIonRasterOverlay.cpp, CesiumIonServer.cpp, CesiumLifetime.cpp, CesiumMaterialUserData.cpp, CesiumMetadataPickingBlueprintLibrary.cpp, CesiumMetadataPrimitive.cpp, CesiumMetadataUtilityBlueprintLibrary.cpp, CesiumMetadataValue.cpp, CesiumModelMetadata.cpp, CesiumOriginShiftComponent.cpp, CesiumPointAttenuationVertexFactory.cpp, CesiumPolygonRasterOverlay.cpp, CesiumPrimitive.cpp, CesiumPrimitiveFeatures.cpp, CesiumPrimitiveMetadata.cpp, CesiumPropertyArray.cpp, CesiumPropertyArrayBlueprintLibrary.cpp, CesiumPropertyTable.cpp, CesiumPropertyTableProperty.cpp, CesiumPropertyTexture.cpp, CesiumPropertyTextureProperty.cpp, CesiumRasterOverlay.cpp, CesiumRuntime.cpp, CesiumRuntimeSettings.cpp, CesiumSampleHeightMostDetailedAsyncAction.cpp, CesiumSubLevelComponent.cpp, CesiumSubLevelSwitcherComponent.cpp, CesiumSunSky.cpp, CesiumTextureResource.cpp, CesiumTextureUtility.cpp, CesiumTile.cpp, CesiumTileExcluder.cpp, CesiumTileExcluderAdapter.cpp, CesiumTileMapServiceRasterOverlay.cpp, CesiumTransforms.cpp, CesiumViewExtension.cpp, CesiumWebMapServiceRasterOverlay.cpp, CesiumWebMapTileServiceRasterOverlay.cpp, CesiumWgs84Ellipsoid.cpp, ExtensionImageAssetUnreal.cpp, GeoTransforms.cpp, GlmLogging.cpp, GlobeAwareDefaultPawn.cpp, ScreenCreditsWidget.cpp, SpdlogUnrealLoggerSink.cpp, UnrealAssetAccessor.cpp, UnrealMetadataConversions.cpp, UnrealTaskProcessor.cpp, VecMath.cpp, Cesium3DTileset.spec.cpp, CesiumCameraManager.spec.cpp, CesiumFeatureIdAttribute.spec.cpp, CesiumFeatureIdSet.spec.cpp, CesiumFeatureIdTexture.spec.cpp, CesiumGeoreference.spec.cpp, CesiumGlobeAnchor.spec.cpp, CesiumGltfSpecUtility.cpp, CesiumLoadTestCore.cpp, CesiumMetadataPickingBlueprintLibrary.spec.cpp, CesiumMetadataValue.spec.cpp, CesiumOriginShiftComponent.spec.cpp, CesiumPrimitiveFeatures.spec.cpp, CesiumPropertyArray.spec.cpp, CesiumPropertyTable.spec.cpp, CesiumPropertyTableProperty.spec.cpp, CesiumPropertyTexture.spec.cpp, CesiumPropertyTextureProperty.spec.cpp, CesiumSceneGeneration.cpp, CesiumTestHelpers.cpp, CesiumTextureUtility.spec.cpp, GeoTransforms.spec.cpp, GlobeAwareDefaultPawn.spec.cpp, GooglePhotorealistic3dTilesLoad.perf.cpp, SampleHeightMostDetailed.perf.cpp, SampleHeightMostDetailed.spec.cpp, SampleTilesetsLoad.perf.cpp, SubLevels.spec.cpp, UnrealAssetAccessor.spec.cpp, UnrealMetadataConversions.spec.cpp
2>[Adaptive Build] Excluded from CesiumEditor unity file: Cesium3DTilesetCustomization.cpp, CesiumCommands.cpp, CesiumCustomization.cpp, CesiumDegreesMinutesSecondsEditor.cpp, CesiumEditor.cpp, CesiumEditorReparentHandler.cpp, CesiumEditorSettings.cpp, CesiumEditorSubLevelMutex.cpp, CesiumGeoreferenceCustomization.cpp, CesiumGlobeAnchorCustomization.cpp, CesiumIonPanel.cpp, CesiumIonServerDisplay.cpp, CesiumIonServerManager.cpp, CesiumIonServerSelector.cpp, CesiumIonSession.cpp, CesiumIonTokenTroubleshooting.cpp, CesiumPanel.cpp, CesiumSourceControl.cpp, IonLoginPanel.cpp, IonQuickAddPanel.cpp, SelectCesiumIonToken.cpp
2>[Adaptive Build] Excluded from VaRest unity file: VaRest.cpp, VaRestJsonObject.cpp, VaRestJsonParser.cpp, VaRestJsonValue.cpp, VaRestLibrary.cpp, VaRestRequestJSON.cpp, VaRestSettings.cpp, VaRestSubsystem.cpp
2>[Adaptive Build] Excluded from VaRestEditor unity file: VaRestEditor.cpp, VaRest_BreakJson.cpp
2>Determining max actions to execute in parallel (24 physical cores, 32 logical cores)
2>  Executing up to 24 processes, one per physical core
2>Using Parallel executor to run 6 action(s)
2>------ Building 6 action(s) started ------
2>[1/6] Compile [x64] CesiumPropertyTextureProperty.spec.cpp
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(40): error C2760: syntax error: 'propertyView' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(54): error C2760: syntax error: ')' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(54): error C2760: syntax error: ')' was unexpected here; expected '}'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(54): error C2059: syntax error: ')'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(57): error C2760: syntax error: 'propertyView' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(71): error C2059: syntax error: ')'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(74): error C2760: syntax error: 'propertyTextureProperty' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(77): error C2760: syntax error: 'classProperty' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(81): error C2760: syntax error: 'sampler' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(82): error C2760: syntax error: 'image' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(91): error C2760: syntax error: 'propertyView' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(159): error C2059: syntax error: ')'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(162): error C2760: syntax error: 'propertyTextureProperty' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(165): error C2760: syntax error: 'classProperty' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(170): error C2760: syntax error: 'sampler' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(171): error C2760: syntax error: 'image' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(180): error C2760: syntax error: 'propertyView' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(223): error C2059: syntax error: ')'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(226): error C2760: syntax error: 'propertyTextureProperty' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(229): error C2760: syntax error: 'classProperty' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(235): error C2760: syntax error: 'sampler' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(236): error C2760: syntax error: 'image' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(245): error C2760: syntax error: 'propertyView' was unexpected here; expected ';'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(287): error C2059: syntax error: ')'
2>E:\SmartSpatial\SmartSpatial_Continual_V2_S\Plugins\CesiumForUnreal\Source\CesiumRuntime\Private\Tests\CesiumPropertyTextureProperty.spec.cpp(290): error C2760: syntax error: 'propertyTextureProperty' was unexpected here; expected ';'
...

The same syntax error pattern is repeated.
We have previously built Cesium from source for other projects, it’s just this time that it’s having trouble.
Any help will be appreciated.

Hi @vacuitydev, welcome to the community!
You should be able to fix this by adding this line:

using namespace CesiumGltf;

To the top of the Define method defined here:

This should be fixed in the next release.

Thank you for your quick response. Big fans of your work here👋.
Unfortunately,

using namespace CesiumGltf;

did not solve all the problems. Other “undefined symbols” problems popped up with us having no idea where the symbols are.

Fortunately, the build on Unreal Marketplace works for us now as our project is only beginning. Looking forward to the next release.

Cheers.

I want to add that adding:

using namespace CesiumGltf;

Just after

END_DEFINE_SPEC(...)

in the files CesiumPropertyTextureProperty.spec.cpp and CesiumPropertyTexture.spec.cpp has solved the issue and Cesium builds successfully. Thank you for leading us to the solution.

We still don’t understand why an older project with the same cesium for UE version and identical build settings does not need the modifications though.

We still don’t understand why an older project with the same cesium for UE version and identical build settings does not need the modifications though.

The Unreal Build Tool does some tricky things to speed up build time where it concatenates multiple .cpp files together before it builds them. Which files get concatenated depends on some heuristics. And depending on which files it happens to combine together, the missing using namespace CesiumGltf may or may not cause you problems. So that’s probably why you didn’t see the problem previously.

Neat