Packaging error when using remote mac compile for iOS build

The remote build fails when reaching fmod. At first I thought I just had to add the iOS binaries to the binaries folder, but it’s still failing trying to compile FMODStudioModule.cpp:

UATHelper: Packaging (iOS):     Undefined symbols for architecture arm64:
UATHelper: Packaging (iOS):       "FMOD::Studio::System::getCPUUsage(FMOD_STUDIO_CPU_USAGE*) const", referenced from:
UATHelper: Packaging (iOS):           FFMODStudioModule::Tick(float) in FMODStudioModule.cpp.o
UATHelper: Packaging (iOS):          (maybe you meant: FMOD::Studio::System::getCPUUsage(FMOD_STUDIO_CPU_USAGE*, FMOD_CPU_USAGE*) const)
UATHelper: Packaging (iOS):       "FMOD::Studio::EventInstance::triggerCue()", referenced from:
UATHelper: Packaging (iOS):           UFMODAudioComponent::TriggerCue() in FMODAudioComponent.cpp.o
UATHelper: Packaging (iOS):           UFMODBlueprintStatics::EventInstanceTriggerCue(FFMODEventInstance) in FMODBlueprintStatics.cpp.o
UATHelper: Packaging (iOS):     ld: symbol(s) not found for architecture arm64
UATHelper: Packaging (iOS):     clang: error: linker command failed with exit code 1 (use -v to see invocation)
PackagingResults: Error: linker command failed with exit code 1 (use -v to see invocation)

Checking the mentioned file I noticed a difference between the mac source and the windows source:
Mac Version:

StudioSystem[EFMODSystemContext::Runtime]->getCPUUsage(&Usage, &UsageCore);

Windows Version:

StudioSystem[EFMODSystemContext::Runtime]->getCPUUsage(&Usage);

So the tool is copying the windows version of the plugin over to the mac and tries to compile it there.

Solutions I tried were:

  • modifying the Unreal Build Tool to include the iOS binaries, that was unnecessary as they were already correctly copied before the modification
  • overwriting the binaries directly on the mac during the remote build process (the correct binaries are already copied so this doesnt change anythig)
  • overwriting the source directly on the mac with the mac version of the build, before and during the remote build process. The first one will just overwrite them back to the windows version on remote build and the second triggers an error, stating that files have been modified since the precompiled header was built.
    Those are just workarounds at best anyways, but currently I would be happy with just a workaround already.

Our setup is:

  • source build of UE 4.25
  • C++ project
  • Remote mac build correctly setup, the whole engine and project builds fine until it reaches the fmod plugin

That does sound like it could cause an issue with remote compiling, what version of FMOD are you using? I haven’t found any source differences between the mac and windows plugin version in the latest FMOD version (2.02.04) so you could try updating and see if that solves the issue, but it would be good to get your FMOD version first so I can try reproducing.

1 Like

Hi Jeff, thank you for your comment! We just recently added iOS support to the project to make some tests and downloaded the binaries for the wrong fmod version. Now everything builds perfectly fine.
Lucky that it was just that simple of a problem, thank you very much :slight_smile:

1 Like