No JucePlugin_Build_Standalone define?


#1

I’ve noticed that the JucePluginCharacteristics.h file has some defines for choosing which formats to compile. The option to compile a standalone application using the standalone wrapper seems to have been left out…
i.e no JucePlugin_Build_Standalone option there.

How do I compile a standalone version?

I think that adding the JucePlugin_Build_Standalone option would be a good idea. Even if the resulting binary isn’t compatible with any of the other formats (this is a problem only on mac I think, where the bundles are of different type), I suggest enforcing a rule for it to be mutually exclusive with any of the other three, the same way that juce_IncludeCharacteristics.h forces one to define at least one among the three plugin formats.

If that’s the way to go, I may do some of the work for you and propose here the needed modifications to the tip


#2

Still no thouhgts about this?


#3

(Sorry, I never noticed this post before)

Yes, I left it out because the project settings all need to be different… Maybe on the PC there’d be a way to bodge it, but I felt that most people would probably want to customise their app wrapper a bit anyway, rather than having a totally generic window around it.

But if you’ve got a cunning plan that would make it easy to add a stand-alone build, I’d certainly be intrigued to see it.


#4

I agree with the fact that (at the moment) it’s not possible to include the “standalone” version within the polymorphic architecture of the plug-in.
What I suggest is to have two different configurations/targets per project: one for building the plug-in (a polymorphic one, including support for formats according to the #defines) and one for a standalone application with no hooks for any particular format.

What I suggest is to check for an additional #define, let’s call it JucePlugin_Build_Standalone, used this way in JucePluginCharacteristics.h:

#if JucePlugin_Build_Standalone
// Don't include hooks and dependencies for any particular format
 #define JucePlugin_Build_VST     0
 #define JucePlugin_Build_RTAS    0
 #define JucePlugin_Build_AU      0
#else
// Set the desired formats for your polymorphic plug-in here
 #define JucePlugin_Build_VST     0
 #define JucePlugin_Build_RTAS    1
 #define JucePlugin_Build_AU      0
#endif

…and added to the check in juce_IncludeCharacteristics.h

#if ! (JucePlugin_Build_VST || JucePlugin_Build_AU || JucePlugin_Build_RTAS || JucePlugin_Build_Standalone)
 #error "appropriate error message here"
#endif

Currently, since I am forced to require at least one of the RTAS, AU or VST format to be included, even if I can compile a standalone version of the JUCE demo plug-in, the resulting binary will include hooks and links to libraries required for those formats, which will probably work but is not “clean”, if you get what I mean.

On the contrary, adding such a JucePlugin_Build_Standalone will allow us develoeper to set up a Project configuration that #defines it, and compiles into a clean binary with no interface for any of those formats.


#5

Ah, ok, I see your point now. Yes, that’s a good thing to add…