JUCE Compiler warnings update submodule

Reference to this topic: Compiler warnings with Xcode 13.3

Any chance we could see a JUCE submodule update to resolve these warnings?

Yes, we will do this soon. I’m in the middle of some major refactoring on a branch however so I don’t want develop to diverge from that too much as I won’t be able to merge it in.

Personally I would prefer for JUCE to not be a git submodule. Using git submodules forces users to redownload multiple copies of JUCE (for example, if you’re using tracktion_engine and building pluginval from source), and is less configurable by the user – if it was just a CMake find_package (JUCE), then users could use any copy of JUCE on their system, even a custom fork if they wanted (as long as it is compatible with the version Tracktion requires, of course).

Well you can already do that of course. It really only uses JUCE as a git submodule so people can pull and build the examples without having to do anything else. That’s also the way our CI works, it would be a real pain if it wasn’t a git submodule.

But in terms of consuming tracktion_engine, there’s absolutely no need to use the git submodule. You don’t even need to clone it.

The real problem is API compatibility. JUCE doesn’t really use semver to delineate API breaks so the only thing we can really do is say “We know tracktion engine builds with the version of JUCE that’s in the submodule as that’s the one we’ve tested. It may work with others”.

An of course if you’re building your own app you can find_package (JUCE) to pull JUCE in but you’re back to square one with the API again.

I’m not sure what else we can do really.

Is there a way to “override” a git submodule and make it reference another directory? Because even if you don’t clone it, the Tracktion CMake relies on that directory existing…

Sure… but if you’re building your own app wouldn’t you just use juce_add_module in your own cmake?

For tracktion_engine, sure. It’s more of an issue if I’m building pluginval from source

But surely there’s less of an issue there? Isn’t it simpler to just have everything in one repo that you clone in to a single dir and know it builds? Or are you combining it with your own projects?