Plugin with the same product name but different file names (VST2/VST3) not enumerated in some DAWs

I have one plugin name ‘Plugin’ in Cmake and different output names for VST2/VST3 plugins.
So, after compilation I have two files:

  1. Plugin VST.dll
  2. Plugin VST3.vst3

But inside both plugins, the internal name is ‘Plugin’.

  • Next, macOS 11 (Studio One) & Win 10 (Cubase 11, Studio One 5) starts to enumerate both plugins (VST2/VST3) only VST3 plugin appears.
  • Let’s remember the name by which VST3 plugin is shown in the DAW
  • Delete the VST3 plugin
  • Reopen DAW and notice that VST2 plugin appears under the same name as VST3 plugin before it

Is it possible to make the plugin product name is unique?

Small clarification from CMake

juce_add_plugin(${TARGET_NAME}
    PRODUCT_NAME "Plugin" 
...
if(TARGET ${TARGET_NAME}_VST)
    set_target_properties(${TARGET_NAME}_VST PROPERTIES OUTPUT_NAME "Plugin VST")
endif()

if(TARGET ${TARGET_NAME}_VST3)
    set_target_properties(${TARGET_NAME}_VST3 PROPERTIES OUTPUT_NAME "Plugin VST3" SUFFIX .vst3)
endif()

Is it possible to setup the plugin name per target?

set_target_properties(${TARGET_NAME}_VST3 PROPERTIES JUCE_PLUGIN_NAME "Plugin VST3")

The short answer is ‘no’. The plugin name is passed from the build system using the JucePlugin_Name preprocessor definition, which is set on the shared code target (and is therefore visible on the wrapped target). To set a unique name on the VST3 target (for example) you’d either need to build the shared code target twice, once with each JucePlugin_Name definition (safe), or change the definition just in the VST3 wrapper (slightly more dangerous, as there’s risk of violating the One Definition Rule if the JucePlugin_Name is used in any header files that are included both by the shared code target and by the wrapper).

It’s probably best to just call juce_add_plugin twice, once with each product name/format pair. You could write your own CMake function to avoid duplicating any common parts of the calls.

1 Like