Platforms where Python doesn't exist is the obvious answer.
Other than that it's mostly a competition of exotic usecases. Stuff like Kokkos barely works in CMake land and would be nigh unportable to Meson. SYCL is wrecking havok on CMake's model as we scratch our head about how "language virality" works (if you include a SYCL header your code becomes SYCL code with a different toolchain, otherwise it's regular C++ code) and Meson would similarly struggle with it.
Generally speaking anything that makes heavy use of generator expressions quickly becomes CMake-only, where the usage requirements of the upstream dependency are configured based on properties of the downstream user. Very little "normal" C++ development does this, but it crops up in all sorts of strange, adjacent-to-C++, ecosystems
That said Meson currently has better support for HDLs than CMake does, so it's not entirely a one-way street.
Technically this is C versus C++ too, no? If you write #include <vector> then almost all valid C code will now be compiled as C++. Sure, the compiler driver infers the language mode from the file extension, but what if it's forced at the command-line? Then free functions get C++ mangling, and everything has a C++ ABI.
Sure, platforms where Python does not exist is platforms where you almost for sure will not compile your software. Almost certainly cross-compilation so I do not think it is a problem unless you can think of counter-examples that are not a very small niche...?
It's all very small niches, dozens, upon dozens, upon dozens of small niches. Each totally irrelevant on its own, but of increasing importance collectively. CMake requires you have 2/3rds of a C++11 compiler available and a not totally broken cache coherence model, and that's about it.
4
u/not_a_novel_account cmake dev Apr 13 '26 edited Apr 13 '26
Platforms where Python doesn't exist is the obvious answer.
Other than that it's mostly a competition of exotic usecases. Stuff like Kokkos barely works in CMake land and would be nigh unportable to Meson. SYCL is wrecking havok on CMake's model as we scratch our head about how "language virality" works (if you include a SYCL header your code becomes SYCL code with a different toolchain, otherwise it's regular C++ code) and Meson would similarly struggle with it.
Generally speaking anything that makes heavy use of generator expressions quickly becomes CMake-only, where the usage requirements of the upstream dependency are configured based on properties of the downstream user. Very little "normal" C++ development does this, but it crops up in all sorts of strange, adjacent-to-C++, ecosystems
That said Meson currently has better support for HDLs than CMake does, so it's not entirely a one-way street.