JUCE icon indicating copy to clipboard operation
JUCE copied to clipboard

[Bug]: CMake + NMake + VST3 synth fails

Open plinnie opened this issue 2 years ago • 0 comments
trafficstars

Detailed steps on how to reproduce the bug

JUCE: 7.0.5 Tooling: CMake

Building a synth audio plugin with CMake generated NMake Makefile, VST3 support fails to compile resources:

[ 48%] Built target MySynth
[ 51%] Building RC object CMakeFiles/MySynth_Standalone.dir/MySynth_artefacts/JuceLibraryCode/resources.rc.res
'Synth\""' is not recognized as an internal or external command,
operable program or batch file.
NMAKE : fatal error U1077: 'C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe' : return code '0xff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX64\x64\nmake.exe"' : return code '0x2'
Stop.

The problem is likely related to resource compilation which eventually invokes this line:

        C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe -DDEBUG=1 -DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1
 -DJUCE_MODULE_AVAILABLE_juce_audio_basics=1 -DJUCE_MODULE_AVAILABLE_juce_audio_devices=1 
-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1 -DJUCE_MODULE_AVAILABLE_juce_audio_processors=1 
-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1 -DJUCE_MODULE_AVAILABLE_juce_core=1 
-DJUCE_MODULE_AVAILABLE_juce_data_structures=1 -DJUCE_MODULE_AVAILABLE_juce_events=1 
-DJUCE_MODULE_AVAILABLE_juce_graphics=1 -DJUCE_MODULE_AVAILABLE_juce_gui_basics=1 
-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1 -DJUCE_STANDALONE_APPLICATION=JucePlugin_Build_Standalone 
-DJUCE_USE_CURL=0 -DJUCE_VST3_CAN_REPLACE_VST2=0 -DJUCE_WEB_BROWSER=0 -DJucePlugin_AAXCategory=2048 
-DJucePlugin_AAXDisableBypass=0 -DJucePlugin_AAXDisableMultiMono=0 
-DJucePlugin_AAXIdentifier=com.yourcompany.MySynth -DJucePlugin_AAXManufacturerCode=JucePlugin_ManufacturerCode 
-DJucePlugin_AAXProductId=JucePlugin_PluginCode -DJucePlugin_ARACompatibleArchiveIDs=\"\" 
-DJucePlugin_ARAContentTypes=0 -DJucePlugin_ARADocumentArchiveID=\"com.yourcompany.MySynth.aradocumentarchive.1\"
 -DJucePlugin_ARAFactoryID=\"com.yourcompany.MySynth.arafactory.0.1\" -DJucePlugin_ARATransformationFlags=0 
-DJucePlugin_AUExportPrefix=MySynthAU -DJucePlugin_AUExportPrefixQuoted=\"MySynthAU\" 
-DJucePlugin_AUMainType="'aumu'" -DJucePlugin_AUManufacturerCode=JucePlugin_ManufacturerCode 
-DJucePlugin_AUSubType=JucePlugin_PluginCode -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_AU=0 
-DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_LV2=0 -DJucePlugin_Build_Standalone=1 -DJucePlugin_Build_Unity=0 
-DJucePlugin_Build_VST3=0 -DJucePlugin_Build_VST=0 -DJucePlugin_CFBundleIdentifier=com.yourcompany.MySynth 
-DJucePlugin_Desc=\"MySynth\" -DJucePlugin_EditorRequiresKeyboardFocus=0 -DJucePlugin_Enable_ARA=0 
-DJucePlugin_IsMidiEffect=0 -DJucePlugin_IsSynth=1 -DJucePlugin_Manufacturer=\"yourcompany\" 
-DJucePlugin_ManufacturerCode=0x56764265 -DJucePlugin_ManufacturerEmail=\"\" -DJucePlugin_ManufacturerWebsite=\"\" 
-DJucePlugin_Name=\"MySynth\" -DJucePlugin_PluginCode=0x47727630 -DJucePlugin_ProducesMidiOutput=0 
-DJucePlugin_VSTCategory=kPlugCategSynth -DJucePlugin_VSTNumMidiInputs=16 -DJucePlugin_VSTNumMidiOutputs=16 
-DJucePlugin_VSTUniqueID=JucePlugin_PluginCode -DJucePlugin_Version=0.1 -DJucePlugin_VersionCode=0x100 
-DJucePlugin_VersionString=\"0.1\" -DJucePlugin_Vst3Category="\"Instrument|Synth\"" -DJucePlugin_WantsMidiInput=0 
-D_DEBUG=1 -I C:\usr\project\audio\MySynth\build\MySynth_artefacts\JuceLibraryCode -I C:\usr\project\audio\MySynth
\JUCE\modules -I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\VST3_SDK 
-I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK -I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK\lv2
 -I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK\serd -I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK\sord -I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK\sord\src -I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK\sratom -I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK\lilv 
-I C:\usr\project\audio\MySynth\JUCE\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src -DWIN32 -D_DEBUG /fo CMakeFiles\MySynth_Standalone.dir\MySynth_artefacts\JuceLibraryCode\resources.rc.res C:\usr\project\audio\MySynth\build\MySynth_artefacts\JuceLibraryCode\resources.rc

The problem is likely due to the | symbol in the VST3 audio category being interpreted as a pipe symbol.

Not enabling the VST3 plugin generation, or making the plugin an effect resolves the issue.

What is the expected behaviour?

That it would compile

Operating systems

Windows

What versions of the operating systems?

11

Architectures

x86_64

Stacktrace

No response

Plug-in formats (if applicable)

VST3

Plug-in host applications (DAWs) (if applicable)

Stand-alone

Testing on the develop branch

I have not tested against the develop branch

Code of Conduct

  • [X] I agree to follow the Code of Conduct

plinnie avatar Apr 30 '23 12:04 plinnie