Compiling JUCE 7 on OSX Sequoia - a guide

If you’re stuck on OSX Sequoia but need to work with JUCE7 projects, here’s how to do it:

  1. Download Xcode 15 from developer.apple.com
  2. Place it in /Applications and rename to Xcode_15
  3. Right click on the Xcode app and pick “Show Package Contents”
  4. Backup Xcode 15 info.plist to some location
  5. Replace Info.plist of Xcode 15 with Info.plist from Xcode 16
  6. Launch Xcode 15
  7. You will not be able to get pass the EULA screen. Close it
  8. Put back original Info.plist to Xcode_15 package
  9. sudo xcode-select -s <path/to/>Xcode_15.app
  10. Compile JUCE 7 on OSX Sequoia :slight_smile:

Based on this thread: ios - Xcode 15 is not running in macOS sequoia - Stack Overflow

An interesting hack which, I have to admit, feels like it should be so unnecessary, but hey … thats the world we live in.

Another option is to use UTM (virtual machine manager) and either of the mist-cli/mist.app tools:

UTM:

mist-cli:

Or the mist App:

This has the advantage that you won’t clutter your development system with other tooling, and can isolate builds in a more clinical manner - for some projects this is important (i.e. AAX builds with notarization, etc.) and its also an easier way to back things up for projects that start to gain higher value/traction.

(Codesigning and notarization with Apple necessitates using the Mac desktop front-end, as it can be quite cumbersome to set up notarization to function over ssh - so this is why I suggest using UTM.)

Note that the use of UTM is best when applied on not-the-latest hardware, i.e. the new M4 Mac Mini has issue with virtualizing MacOS versions 12 - 13.3, so its wise to re-purpose slightly older machines for this task.

I have a somewhat easier and less dirty solution for the moment. There’s currently only a single method that doesn’t compile under Sequoia, it’s purpose is to take screenshots programmatically, as far as I can see it’s not used anywhere in the lib, and doesn’t have much use inside a plugin.

So the solution is to just delete the offending methods. Only 1 file needs editing, here’s the diff:

Why remove the method and not just set up the MAC_OS_VERSION_14_0 macro guard a bit better so that it remains available for earlier versions of OSX?

I have no use for the method, invested the minimum amount of effort possible.

Ah understood, this was for your local copy of JUCE only .. for some reason I thought you were making a pull request, never mind ..