VST3 plugin with Code::Blocks (Windows)


#1

Hello,
I’m trying to generate a VST3 plug-in with no success. I would appreciate if someone could help me, or at least tell me if there is any known issue. Below are the details:

Setup:
Code::Blocks (Windows) with the x86_64-w64-mingw32-g++ compiler

Behaviour:
Projucer normally generates a VST project. After some minor tweaks, Code::Blocks correctly generates a .lib library, a working executable and a VST2 dll file.
However, no matter how you change the settings in Projucer (“Build VST3” enabled, “Build Audio Unit” enabled etc…), Code::Blocks always builds the same .exe with the VST2 dll stuff.
I inspected the Code::Blocks project file (.cbp) and I can see the following flags being generated:

-DJucePlugin_Build_VST=1 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0

no matter what the settings are in Projucer.
Of course, I correctly set the global paths, including
VST3 SDK: D:\dev\juce\VST_SDK\VST3_SDK
where the Steinberg SDK was downloaded. Note that the Code::Blocks project file (.cbp) generated by Projucer does not even contain this string at all.

I desperately tried to hack the Code::Blocks project by forcing something like:
… -DJucePlugin_Build_VST3=1 …
… -ID:\dev\juce\VST_SDK\VST3_SDK …
which are actually used (I can see that in the message log), but nothing changes, and the compiler keeps on taking a file named “include_juce_audio_plugin_client_VST2.cpp” instead of its VST3 counterpart. Of course, hacking the compilation manually is not a great idea.
The problem is simply that the VST3 toolflow in Projucer doesn’t seem to work at all, as if the settings were completely ignored while generating the Code::Blocks project (btw, experimenting with the Exporters, I noticed that the same happens with the Linux Makefile).

Any hint is absolutely welcome!!


#2

It may simply be that VST3 with Codeblocks and mingw/gcc as the compiler has not been tested by the JUCE team. (Does Steinberg say mingw is supported anyway with VST3, though…?)


#3

VST3 is not supported by the Code::Blocks exporter: https://github.com/WeAreROLI/JUCE/blob/master/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_CodeBlocks.h#L122.


#4

ok, thanks. Apparently there is no support for Code::Blocks (Windows) targeting VST3. I guess this may also have to do with the VST3 SDK and the way it interacts with the building process.

I have a question for the team:
Do you see any possibility for an average-skilled programmer to work around these issues somehow, and build a VST3 pluging by putting together the VST3 SDK code and the Projucer-generated Code::Blocks project manually,
…or…
do you see any inherent problem making all of that impractical?

Thanks


#5

According to this thread, the VST3 SDK doesn’t compile with MinGW:

Is there any reason you absolutely want to use the Code::Blocks exporter?


#6

Hi, thanks for your reply. Let me first highlight that I’m by no means complaining for the missing support to Code::Blocks. I understand that supporting the automated toolflow provided by Juce is very challenging and demanding in terms of development effort, and the toolkit is great as is.

The reason for my question is simply that I don’t like the idea of installing a 130 GB monster IDE just to compile a VST3 plugin, along with mere technical curiosity.
So, I’d like to find my own way to work around the Code::Blocks/mingw limitation, but of course I feel it would be very important to collect some preliminary feedback from the team to see if that is actually doable, or if there are inherent issues that are impossible or very hard to solve.


#7

You probably mean Visual Studio with that. My Visual Studio 2017 installation for C++ desktop development takes about 5 gigabytes. (Microsoft now allows doing pretty slim Visual Studio installations. One can of course argue that even that 5 gigabytes is too much but IMHO it’s reasonable.)