Chuckk
July 14, 2026, 2:08pm
1
Hello! I have Debian Bookworm.
All dependencies updated / installed per the README.
I also installed the ARA SDK and set the path to it in CMakeLists.txt.
I run:
cmake . -B cmake-build -DJUCE_BUILD_EXAMPLES=ON -DJUCE_BUILD_EXTRAS=ON
all good, then:
cmake --build cmake-build --target ARAPluginDemo --config Release
Seems OK. I also tried without --config Release.
I went through a bunch of searching, scanning, path cheking, etc. until I discovered that there are NO .vst3 files anywhere in the JUCE folder. There are folders with the names of the intended .vst3 files, and inside each one is “Contents/x86_64-linux/” but that folder is empty.
I am following the instructions exactly according to the README file.
Am I missing something to get JUCE to make .vst3 files using CMake on Linux?
VST3 plugins are “bundles” which appear as directories on Linux and Windows. Single file plugins have been deprecated for almost a decade now.
If you share the output of the cmake --build command it may be easier to help.
Chuckk
July 14, 2026, 2:29pm
3
I don’t think the problem is with ARA The Gain Plugin does the same..
$ cmake --build cmake-build --target GainPlugin --config Release
[ 0%] Built target juce_linux_subprocess_helper
[ 0%] Generating GainPlugin_artefacts/JuceLibraryCode/JuceHeader.h
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/GainPlugin_artefacts/JuceLibraryCode/Main.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/ARAPluginDemo_artefacts/JuceLibraryCode/juce_LinuxSubprocessHelperBinaryData.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_processors/juce_audio_processors.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_gui_extra/juce_gui_extra.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_gui_basics/juce_gui_basics.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_gui_basics/juce_gui_basics_2.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_gui_basics/juce_gui_basics_3.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_gui_basics/juce_gui_basics_4.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_gui_basics/juce_gui_basics_5.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_graphics/juce_graphics.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_graphics/juce_graphics_Harfbuzz.cpp.o
[100%] Building C object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_graphics/juce_graphics_Sheenbidi.c.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_events/juce_events.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_core/juce_core.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_core/juce_core_CompilationTime.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_data_structures/juce_data_structures.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_processors_headless/juce_audio_processors_headless_ara.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_processors_headless/juce_audio_processors_headless_lv2_libs.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_basics/juce_audio_basics.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_devices/juce_audio_devices.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_formats/juce_audio_formats.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/__/__ /modules/juce_audio_utils/juce_audio_utils.cpp.o
[100%] Linking CXX static library GainPlugin_artefacts/libGainPlugin_SharedCode.a
[100%] Built target GainPlugin
There is no .vst3 file anywhere. The .vst3 folder under the Gain plugin has no files in it.
daniel
July 14, 2026, 2:34pm
4
It seems you built the SharedCode library. Try building the target with the _VST3 suffix i.e. --target GainPlugin_VST3.
Chuckk
July 14, 2026, 2:39pm
5
The Surge vst3 install still has a .vst3 file inside the folder.
$ cmake --build cmake-build --target GainPlugin --config Release
[ 0%] Built target juce_linux_subprocess_helper
[ 0%] Generating GainPlugin_artefacts/JuceLibraryCode/JuceHeader.h
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/GainPlugin_artefacts/JuceLibraryCode/Main.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir/ARAPluginDemo_artefacts/JuceLibraryCode/juce_LinuxSubprocessHelperBinaryData.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_processors/juce_audio_processors.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_gui_extra/juce_gui_extra.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_gui_basics/juce_gui_basics.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_gui_basics/juce_gui_basics_2.cpp.o
[ 0%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_gui_basics/juce_gui_basics_3.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_gui_basics/juce_gui_basics_4.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_gui_basics/juce_gui_basics_5.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_graphics/juce_graphics.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_graphics/juce_graphics_Harfbuzz.cpp.o
[100%] Building C object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_graphics/juce_graphics_Sheenbidi.c.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_events/juce_events.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_core/juce_core.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_core/juce_core_CompilationTime.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_data_structures/juce_data_structures.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_processors_headless/juce_audio_processors_headless.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_processors_headless/juce_audio_processors_headless_ara.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_processors_headless/juce_audio_processors_headless_lv2_libs.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_basics/juce_audio_basics.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_devices/juce_audio_devices.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_formats/juce_audio_formats.cpp.o
[100%] Building CXX object examples/Plugins/CMakeFiles/GainPlugin.dir// /modules/juce_audio_utils/juce_audio_utils.cpp.o
[100%] Linking CXX static library GainPlugin_artefacts/libGainPlugin_SharedCode.a
[100%] Built target GainPlugin
Unlike the ARA plugin demo, this one does have a .so file inside the Contents folder; but Reaper does not find it no matter what I do.
daniel
July 14, 2026, 2:48pm
7
Again, try building the target _VST3 or _ALL exists sometimes too:
cmake --build cmake-build --target GainPlugin_VST3 --config Release
Chuckk
July 14, 2026, 2:51pm
8
Thank you. As a general rule, if you say that, does it mean that one of the CMake files must actually define this target? Because it is not mentioned in CMakeLists.txt in the main JUCE folder, nor the examples folder, nor the examples/Plugins folder.
daniel
July 14, 2026, 2:59pm
9
In that case your FORMATS variable might be empty.
See here:
# The JUCE CMake API
## System Requirements
- All project types require CMake 3.22 or higher.
- Android targets are not currently supported.
Most system package managers have packages for CMake, but we recommend using the most recent release
from https://cmake.org/download. You should always use a CMake that's newer than your build
toolchain, so that CMake can identify your build tools and understand how to invoke them.
In addition to CMake you'll need a build toolchain for your platform, such as Xcode or MSVC.
## Getting Started
### Using `add_subdirectory`
The simplest way to include JUCE in your project is to add JUCE as a
subdirectory of your project, and to include the line `add_subdirectory(JUCE)`
in your project CMakeLists.txt. This will make the JUCE targets and helper
This file has been truncated. show original
FORMATS
For plugin targets, specifies the plugin targets to build. Should be provided as a space-separated list. Valid values are Standalone Unity VST3 AU AUv3 AAX VST LV2. AU and AUv3 plugins will only be enabled when building on macOS; AUv3 plugins will only be enabled when using the Xcode generator. It is an error to pass VST without first calling juce_set_vst2_sdk_path.
This variable is often generated with if() around platforms, and yours might exclude VST3 on linux (guessing)
Once you fixed the FORMATS variable (use message() to print the content), you need to run the first cmake step as well…
Chuckk
July 14, 2026, 3:28pm
10
daniel:
This variable is often generated with if() around platforms, and yours might exclude VST3 on linux (guessing)
Once you fixed the FORMATS variable (use message() to print the content), you need to run the first cmake step as well…
Hmm. Thanks for the tip. I will absorb this as I experiment, but I do find it vexing that none of what you just cited is in any of the CMakeLists.txt files in the example plugin directories or upper directories. I was wondering what I missed that could have saved me the trouble of posting here, and why I’m the first person to do so…
At any rate, the ARA plugin demo is now working, and I’m about to have a great time.
daniel
July 14, 2026, 3:35pm
11
I’m glad it is working now.
Indeed, the PIP that abstracts away all those things. I don’t think that does a great service when you try to understand, how to set it up yourself. And I doubt many people setup their projects as a PIP in production.