On 02/12/17 21:34, Stefan Seefeld via Boost wrote:
Hi Domen,
On 02.12.2017 15:58, Domen Vrankar wrote:
Stefan I have one suggestion - maybe a stupid one but that's for you to decide...
Since Faber is meant to be a cross platform build system and CMake is a build system generator you could perhaps start by competing with other build systems by attempting to integrate Faber into CMake as yet another build system along side Makefiles, Ninja...
What would be the point of that ? Do CMake users really care what build system "backend" is being used ? I thought the goal was for them to only interact with CMake itself ? I expect Faber to get most publicity from its simple and portable interface, which wouldn't even be visible if it were used as a CMake backend.
The main point of this would be to lower the barrier to entry for using Faber. If I wasn't using CMake, I would never have had a reason to try out the Ninja generator, and I would have stuck with plain old Makefiles. The cost of switching build systems for moderately large projects is huge, and switching build systems by rewriting all the build logic is a big task, particularly when you can't know up front if it's going to be worth the effort or full cost/benefit of migrating. I've experienced this first hand with project conversions to the autotools in the early 2000s and to cmake over the last few years. It turned out Ninja was a pretty good build tool, and is much faster than make, so I got to use a nice tool which I'd otherwise have ignored, irrespective of its merits, because I couldn't justify rewriting everything from scratch. Being able to generate Faber build configuration with CMake provides similar possibilities. You can get exposure and real world usage with existing big projects, without projects having to commit huge resources to wholesale conversion. This gets you extra testing and exposure, and it lets other projects experiment with Faber when realistically they would not be able to even think about it otherwise due to the cost. It might be the case that the stuff CMake generates isn't as æsthetically pleasing or as efficient as hand-written files; this is certainly the case for Ninja and a bit for make as well. But, when the alternative is not using the tool at all, it's a compromise I can live with. You are correct that often we don't care about the CMake generator in use, if all we want is to build stuff. But sometimes choosing a specific backend is useful. I use Ninja over make when the system has enough memory and CPUs to benefit from it, and have it peg several dozen cores to the max (it can make small systems suffer horribly). I use various IDE generators when I need to use an IDE. If Faber has specific advantages which differentiate it from all the others, then CMake support would let users opt into using those distinguishing features when they need them. Please do think about it. It's an effective way to get Faber more exposure, by allowing all the thousands of projects using CMake to build with it. Regards, Roger