yes, it would require a lot of rewrites, but the way i see it people only use cmake because the projucer doesn’t do everything they want yet and people would use the projucer again, if it was even more powerful. i still use the projucer, but i personally consider cmake because i want to be able to make different sorts of default projects. would it be too hard to implement something like that into the projucer? what other reasons do people have for not using the projucer?
edit: you know what would be even better? if the projucer itself was moddable by assetts from the assett store. on the one hand it would make it a little more prone for errors, but on the other hand if someone made a really good projucer assett, like a built in gui editor or something, why not?
I don’t think we will step back to the Projucer, even if its functionality would be extended. A few reasons are:
Integration of third party libraries
When projects start to become big, you likely want to integrate third party solutions that are not specifically designed for JUCE. CMake is used quite widespread in the big C++ world. Having the ability to directly link against third party CMake targets and configure those third party targets from within your projects CMake script is a huge benefit. We also manage all our dependencies with a conan server. Integrating conan with CMake was easy, since there is official support for it – I doubt there would be for a niche tool like the projucer. I think you get the point
Free choice of build systems
While solutions like Xcode and Visual Studio are fast to setup and are working out of the box fast, they are not as flexible and fast as other build systems out there. CMake gives us the ability that we can easily use build systems not supported by the Projucer to build our projects. Especially Ninja is a great choice here since it’s available for all platforms. In combination with a clang compiler toolchain you can easily use the same tools for each platform. And if the next big innovation in build systems should come around in a few years I assume that there will be CMake support for it. Another plus: Every developer can chose the IDE/Code Editor of choice. Nearly all serious editors out there have some kind of CMake support nowadays
Integrating custom steps like e.g. calling a python script here or generating a Doxygen documentation while building there is easy to handle with CMake. Wrapping such tasks in CMake functions shared across all projects makes it easy to set up complex builds. Or compiling a unit test application and a tool to read debugging logs created by the plugin along with the plugin is easy.
TLDR: CMake begins to shine if your projects become more complex, your company supports a range of parallel products based on the same codebase etc.
yes that makes a lot of sense. my concern was just that in order to integrate third party libraries and stuff one has to even learn how to integrate third party libraries in c++ in the first place. and everyone knows that means scoping a lot of random github pages for solutions, trying to build them and debug things for hours or days until you can finally see something working. everyone thinks that’s normal, but what if it could be better? that’s why i thought it would be sensible to have it as a projucer feature. people could buy and add assetts in basically the same step and since it’s all stuff that was built for JUCE you don’t have to fix a lot of bugs then. would it be possible to have such a workflow if the store was a website? not sure, but if yes, that would be cool too ofc
The only difference here is whether the site you’re downloading Juce code from is embedded inside the Projucer or hosted in a browser.
I don’t really get what you mean by integrating this into the Projucer – people will still have to download the code, place it in their source tree (or perhaps create a git module?), and then add the relevant includes to their project headers. I really don’t think there’s that much of that process you can automate, and I don’t think it would be worth the Juce team’s time to try and implement that. Downloading some code and writing #include a couple times is not that hard.
What third party libraries have you been using? I added MTS-ESP and Ableton Link to my plugin while coding from an iPad, and it was quick and painless to do, took me 15 mins…
I would say, that’s how it felt like before I learnt how to do it
For real, in-depth C++ know how usually is the best strategy against frustrating try and error work, especially when it comes to integrating third party stuff that is not designed to just work with JUCE. But I have to admit that it took me some years of daily C++ coding to say that I really know what I’m doing, know how to read all kinds of compiler errors etc and I remember the frustration back when I didn’t have that level of experience.
Still, this is where JUCE modules come in handy. In contrast to some arbitrary third party libraries not designed for JUCE, JUCE modules are especially designed to extend JUCE and if they are written well, they should just work. This is why I think they are a perfect format to ship extension for JUCE, no matter if special Components, some custom LookAndFeel classes or special dsp functions.
Downloading a module from a website and either adding it with a few clicks in the projucer or with one line of CMake code seems like a very straightforward approach to me.
i just have the bigger picture in mind, you know? at the moment the biggest assetts in such a store would probably just be stuff like some cool lookAndFeels, better sliders, an xy pad, modulation systems and so on… but in some years there might be 3d editors for visualizers, things that basically do what oeksound soothe does in just one assett and something that makes it really easy to build an algorithm around a neural network with a big dataset. at that point juce would become the only option for vst development on the whole market because no one else could keep up anymore
Hello this is Gulshan Negi
Well, there are several online marketplaces, including Envato Market, Creative Market, UI8, and Dribbble, where you can purchase professional-looking UI assets for your plugins. Before making a purchase, be sure to review the licensing terms and usage restrictions to ensure that they meet your needs and comply with any applicable laws or regulations.