Commonly shared JUCE subproject

we have a lot of plugins sharing a common JUCE based codebase. So far each plugin is organized by Projucer and has to maintain the common code individually. Structural changes to the common code are tedious since they require touching (nearly) all plugins. Usually we would split up such projects and have a shared common subproject. But how can this be achieved with Projucer?

Thanks for any hints and thoughts!

Are all the common source files added individually to each project or do you use custom JUCE modules for your shared codebase?
In case the first applies, obviously “put them into modules and add them as git submodules to your individual projects” is probably the best answer. Or do you already use modules but need features that are not available with that?


Thanks for the hint! I just had a short look at the JUCE user submodules, and I think they provide what we need. Thanks!

… and is there a possibility to organize and reference binaries in JUCE user modules to be included in BinaryData.h?
Any thought or hints of how to define and reference common binary data across various Projucer maintained plugins are very welcome! Thanks!

I handle this by first using the Projucer to produce the BinaryData stuff and then just copy-pasting the result to a file in my custom module.

For example, I use custom fonts in all my plug-ins and so I used the Projucer to turn the font files in binary data and then copied and renamed the resultant BinaryData.h to my_Fonts.h.

1 Like

See also the Projucer commandline options:

➜  Projucer --help


 Projucer --resave project_file
    Resaves all files and resources in a project.

 Projucer --resave-resources project_file
    Resaves just the binary resources for a project.
 Projucer --encode-binary source_binary_file target_cpp_file
    Converts a binary file to a C++ file containing its contents as a block of data. Provide a .h file as the target if you want a single output file, or a .cpp file if you want a pair of .h/.cpp files.

Thanks, for the all your suggestions!