New to CMake? Read up about JUCE and CMake on my blog.
Pamplejuce is the template I use to make my JUCE projects (such as Sine Machine).
It’s “batteries included.” 🔋🔋
That means contains everything that I want in a project for it to feel complete, from a UI inspector to packaging and code signing.
You don’t need to keep all the stuff I included. Rip out the code signing stuff or disable the Tests target if you don’t need em. Everything is fairly modular!
Pamplejuce is a template repository
That means the easiest thing to do is click “Use this template” on GitHub or at the top of the page to print yourself a copy of the repository.
Just to be clear, Pamplejuce won’t be an actual dependency of your project (although the cmake-includes repo will be).
You can read about how to manually sync with Pamplejuce’s latest changes here.
Think of Pamplejuce as “Sudara’s starting place” which you can then quickly cannibalize to make your own custom starting place.
Why build plugins with Pamplejuce?
Building your plugins with Continuous Integration (CI) comes with great advantages:
- Reduced workflow friction. No more manually jumping between a mac and windows machine and waiting for builds.
- Peace of mind. With pluginval running against each build, and any tests you add, you can feel safe that your plugin will at least load in DAWs on all platforms.
- Consistency. You can be sure each build is built the way the last build was built. This eliminates a whole class of variables and issues.
- Automated releases and publishing to your site / storefront.
Building in CI entails some overhead.
Some companies say they spend 10% of their time maintaining their build systems.
I probably spend at least solid week a year dedicated to it, plus a few hours every few months.
On the one hand, I’m also maintaining Pamplejuce and pluginval, so I have more work than you would have. On the other hand, I also have deep knowledge (most of which I’ve attempted to dump in this manual).
However you cut it, after you are up and running, you should expect to spend some time in the future banging your head against red builds and dealing with dependency and ecosystem changes. Things that are likely to happen:
- You’ll need to update which GitHub runners you are using. GitHub is fairly aggressive about deprecating old versions of operating systems, typically only keeping the last 3 from each platform in rotation.
- You’ll need to update
JUCE
and thecmake
submodule as the ecosystem evolves. - Pluginval will complain about some recent changes in your plugin and you’ll need to run it locally to figure out what the problem is.
Leave a Reply