VST/AU builds fail after upgrading to Xcode 15

@mydearzampano that is expected.

On some of the most popular projects (listed below) we have enabled the -Wl,-weak_reference_mismatches,weak linker flag, and silenced the warning to make things easier for customers

  • Projucer
  • DemoRunner
  • AudioPluginHost
  • UnitTestRunner
  • BinaryBuilder
  • juceaide

This isn’t foolproof as if these projects are run on anything less than macOS 13 or iOS 15 they will likely crash! For the public version of the Projucer on our website it uses the -Wl,-ld_classic flag which will mean it can run on older platforms.

For any project not listed above (including your own) you’ll have to read the warning and or error message and decide how you would like to proceed. There isn’t an easy option we can offer.

Here’s what I suggest.


If you know you’ll always be building with Xcode 15 (that includes all the developers working on the project and your CI!)

  • Enable the -Wl,-ld_classic linker flag
  • Add the JUCE_SILENCE_XCODE_15_LINKER_WARNING preprocessor definition

Once the linker flag is added the project will NOT build using older versions of Xcode, this is why we can’t just enable this by default.


If you need to support older versions of Xcode and you only need to support macOS 13+ and/or iOS 15+

  • Enable the -Wl,-weak_reference_mismatches,weak linker flags
  • Update your deployment targets
  • Add the JUCE_SILENCE_XCODE_15_LINKER_WARNING preprocessor definition

We currently support macOS 10.9+ and iOS 9+ jumping up to these version would not be very popular hence we can’t take this option.


If you need to support older versions of Xcode AND you need to support versions less than macOS 13 and/or iOS 15 and you are using an older version of Xcode to build binaries released to your customers

  • Enable the -Wl,-weak_reference_mismatches,weak linker flags
  • Add the JUCE_SILENCE_XCODE_15_LINKER_WARNING preprocessor definition
  • WARNING: Builds made using Xcode 15 will not run on devices running version less than macOS 13 and/or iOS 15

Again, we currently support macOS 10.9+ and iOS 9+ causing crashes on these versions would not be very popular hence we can’t take this option.


If you need to support older versions of Xcode AND you need to support versions less than macOS 13 and/or iOS 15 and you are using Xcode 15 to build binaries released to your customers

  • Just on builds made using Xcode 15 you’ll need to find a way to inject the -Wl,-ld_classic linker flag without also imposing this flag on builds made using older versions of Xcode
  • Add the JUCE_SILENCE_XCODE_15_LINKER_WARNING preprocessor definition

There is no easy way for us to do this automatically for you otherwise that is what we would probably do.


As you can see there is no easy answer, these are known issues with the new linker in Xcode 15 (see here) and there is nothing much we can do about it. The warning / error is there to let you know rather than finding out by releasing a product to customers and then having them reporting back crashes that are hard for you to debug or reproduce.

It’s worth noting that once Xcode 15.1 is officially released we’ll likely drop support for Xcode 15.0 altogether, but unfortunately it looks like only one of the two issues is likely to be solved in the next version so these problems are unlikely to completely disappear.

Wherever possible I would strongly recommend not upgrading to Xcode 15 until these problems are fully resolved.

1 Like