Xcode update broke my projects - "Cycle Inside _"

I have just updated Xcode to 15.0 and now all my plugins won’t build. Each one says “Cycle inside - Shared Code; building could produce unreliable results.”
Anyone else get this? Or know of a fix. Or even still how to revert back to an older version of Xcode.
Very frustrating.

1 Like

Previously discussed here:

Just downloaded the developer branch on 18 october 2023.
I get this error when i try to build the Producer in XCode:

Static assertion failed due to requirement ‘std::string_view(“15.0.0 (clang-1500.0.40.1)”) != std::string_view(“15.0.0 (clang-1500.0.40.1)”)’: The new linker introduced in Xcode 15.0 will produce broken binaries when targeting older platforms.

Would be nice if there was an easy way to find out when JUCE is MacOS 14 & XCode 15 ready…

The thing with MacOS is that its no walk in the park if you want to downgrade to a previous version of MacOS to be able to run a older version of XCode… I created a separate volume to test compatibility fortunately…

The very latest commit on the develop branch addresses this:

Additionally, if you read the full compiler diagnostic, it provides a couple of workarounds you can apply if you need to use Xcode 15.

Thanks the Producer compiles fine now :wink: My project gives the same assert…

I don’t need to use XCode 15… I dont care… I just continue doing my thing in XCode 14… Works fantastic…

But it would be nice to know where i can see when Juce is XCode 15 ready so i know when to upgrade to MacOS Sonoma…

@martijndeluxe as far as we can tell JUCE projects should work with Xcode 15 (I’m not sure why some people are seeing the cycle inside issue mentioned above). The messages provided in the warning/error message provide details as to what you need to do (these are due to known issues with a new linker provided by Apple in Xcode 15). The easiest and probably safest option right now is to enable the linker flag -ld_classic, however this will mean your project can only build with Xcode 15 which is why we can’t enable it for you.

Well before the commit today 1.48 PM i had this error when trying to build the Producer.
Now the Producer builds like a charm :wink:
But when i export my project from the Producer and try to build it i get the same error:

Static assertion failed due to requirement ‘std::string_view(“15.0.0 (clang-1500.0.40.1)”) != std::string_view(“15.0.0 (clang-1500.0.40.1)”)’: The new linker introduced in Xcode 15.0 will produce broken binaries when targeting older platforms.
To work around this issue, bump your deployment target to macOS 13 or iOS 15, re-enable the old linker by adding ‘-Wl,-ld_classic’ to your link flags, or update to Xcode 15.1.
Once you’ve selected a workaround, you can add JUCE_SILENCE_XCODE_15_LINKER_WARNING to your preprocessor definitions to silence this warning.

Anything i should check on the the producer settings?

1 Like

Alright! Changed Deployment Target to 13.0… That worked :wink:

Thanks so much !!!

Hi there, I could use some help here.

I’m still using Juce 6, waiting to upgrade to Juce 8 when it is released. Today I upgraded my development system to Sonoma 14.4.1, which was necessary to test and use the new fixes for AUs that were just released.

The upgrade was fine and plugins run correctly. However, this upgrade also upgraded Xcode to Xcode 15.3, and compiling any plugin gives this unfortunate “Cycle inside a single target; building could produce unreliable results” error message.

I can’t revert, and Xcode 14 won’t run on Sonoma. Is there any way we can patch Projucer 6 to not give this error? Or are we dead in the water unless we upgrade to Juce 7 or until Juce 8 is released?

We’re really stuck here!

Thanks,
Dan

Update: after reading up on this error, I’ve discovered that I can get my projects to compile by manually removing each explicit setting of

DSTROOT=/

This does seem to solve the issue for me. Perhaps this is an easy fix in the Projucer code?

Thanks,
Dan

For anyone that encounters this in the future, I solved this by modifying jucer_ProjectExport_Xcode .h from:

s.set (“DSTROOT”, “/”);

to:

s.set (“INSTALL_ROOT”, “/”);

After making this change, plug-in projects saved with the Projucer now compile properly in Xcode 15.3 without the “Cycle insider a single target” error message.

I made this change based on what I learned in this Apple Developer Forum post: Xcode 15: "Cycle inside ...; build… | Apple Developer Forums

Dan

1 Like