JUCE
JUCE copied to clipboard
[Bug]: CMake + NMake + VST3 synth fails
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