For many, especially those starting from 0, it improves things because you don’t need to write all those manual build scripts in CI — everything is standardized.
In your case, you’re already setup and running.
So what is it that Cmake gives me?
Other nice things are:
-
Standardization across projects/teams and flexibility within a large maintained ecosystem.
-
It’s build configuration vs. spaghetti code (build scripts). Scripts tend to be brittle across compilers/operating systems/versions.
-
The configuration is explicit (vs. something you modify in a UI). This facilitates sharing/comparing between projects.
-
Complex dependencies are easier/possible in CMake. CMake is widely supported in the C++ ecosystem.
-
Adding JUCE modules (like my component inspector) becomes a 1-liner, you don’t need to manually juggle compile definition / preprocessor stuff for dependencies and it’ll “just work” in CI.
-
You could (and people do) build 10 plugins in a monorepo with CMake
-
With Pamplejuce (what this thread is about) you just need to call 1 command to configure and 1 command to build all plugin targets, including tests and benchmarks — on all platforms.
Why would I use it and give up all the conveniences of Projucer ?
CMake can also be a pain, yet another esoteric thing to learn. I would only only switch if you have a good reason.
But I 100% recommend it to people starting out and who want to build in CI — so much so that I maintain Pamplejuce!