People love to complain about CMake, often with valid complaints as well. But it - to this day - remains the only build system where I’ll actually trust a project when they say they are cross-platform.
Being the Windows maintainer for OpenMW, it used to be absolute hell back a decade and half ago when an indirect dependency changed - and used something like SCons or Premake while claiming to be “cross-platform”, used to be that I had to write my own build solutions for Windows since it was all hardcoded against Linux paths and libraries.
CMake might not be the coolest, most hip, build system, but it delivers on actually letting you build your software regardless of platform. So it remains my go-to for whenever I need to actually build something that’s supposed to be used.
For personal things I still often hack together a couple of Makefiles though, it’s just a lot faster to do.
People love to complain about CMake, often with valid complaints as well. But it - to this day - remains the only build system where I’ll actually trust a project when they say they are cross-platform.
Being the Windows maintainer for OpenMW, it used to be absolute hell back a decade and half ago when an indirect dependency changed - and used something like SCons or Premake while claiming to be “cross-platform”, used to be that I had to write my own build solutions for Windows since it was all hardcoded against Linux paths and libraries.
CMake might not be the coolest, most hip, build system, but it delivers on actually letting you build your software regardless of platform. So it remains my go-to for whenever I need to actually build something that’s supposed to be used.
For personal things I still often hack together a couple of Makefiles though, it’s just a lot faster to do.
CMake and meson aren’t build systems, they are generators. If you want to use Ninja, just add
-G Ninja
.Cross platform
(*As long as your platform isn’t shite)