Best practices for building releases of VST3 Plugins

Hello Everyone!

I have done a release build in Visual Studio and I have been able to get my .vst3 plugin to show up in Ableton and Reaper on windows. However, on my buddie’s mac, it does not show up. Has anyone encountered this problem? Just to be clear it works on every Windows computer I have tried it on but it is not working on anything OS based.

Any help would be much appreciated :slight_smile:

Noah

Hi Noah,

You need to build on platform which will be used. Software compiled on Windows will not work on a mac and vice versa.

Oh shoot. Good to know. Is there any reason particularily why this is/why people have not figured out a workaround?

Also, Im assiming that I can just install JUCE on a mac and then build my .jucer file in Xcode right?

Thanks for your help!

Compiling for one target on another is referred to as “cross compilation” and there are ways to do it, if you have the patience and motive.

To target MacOS you need the frameworks provided by Apple’s developer tools, or else you will not be able to link the build. In general, Apple does not distribute their tools or frameworks on non-Apple devices or operating systems, and it is usually against their license terms to distribute them yourself. That doesn’t stop people from doing it, it’s just inadvisable (not a big deal if you’re just hacking for fun, bigger deal if you’re a company or developer selling the product).

It’s also just a good idea to compile and test on the targets you’re distributing on. Some things are prone to breaking if you’re not careful.

So when you “cross compile,” do you just release build the plugin on Windows, copy the .jucer to macOS and build it in Xcode there (assuming JUCE and all modules are installed on that machine)?

Just want to make sure before I go buy a Mac.

No, cross compilation means, “I install a toolchain (compiler, linker, and system libraries) on operating system Foo that let me target operating system Bar, compile the artifacts on my machine running Foo and send them to users to run on Bar.”

Doing this for MacOS is questionable because of the licensing restrictions on Apple’s toolchain. I’m not going to tell you it’s impossible, because it’s not (plenty of developers cross compile for MacOS on Linux, for example), just that you might need to dig around the internet to see how they do it.

Okay. Thanks for the clarification. Sounds like it might be easiest to just get my hand on an old mac computer and compile it from there :^).

While I‘d also recommend you to get a real mac (just make sure it can run macOS Catalina in order to be able to target all kinds of new and old macOS versions) you could also consider building your plugins via free or paid cloud services like e.g. GitHub actions if setting up scripts to perform an automated build process is something that seems like a task you could cope with.

In any case, also be prepared that in the macOS world you need to sign an notarize your build in order to make it executable on someone elses computer without heavy modification to the systems security settings. For that you need to set up a paid Apple Developer account.