|
|
|
|
|
by maccard
1810 days ago
|
|
> I think I had the best experience with Meson/Ninja so far.
cmake lets you use ninja as the backend if that's your cup of tea. You can even set it to the default generator
, by setting the CMAKE_GENERATOR environment variable to ninja. (I have no meson experience, so can't compare it). > I don't think that I have ever been able to successfully compile a project that uses CMake. That's quite the statement. In practice, I've found
cmake -h. -Bbuild && cmake --build build to work about 90% of the time. Far more luck than I've had with autotools. > Its code is horrifying too, for example: 1) I'm sure I could find some horriffic code in meson too if I went digging. 2) The alternative to this is you having to write something equivalent in your own code, meaning that in my code I don't need to do stuff like [0] in my code to detect features; my build system handles it for me. 3) CMake supports more platforms and targets than I've ever seen in my life, and likely supports more compilers than are necessary. that's a blessing and a curse, but it means that if I write simple program to run on some crufty microcontroller with a bastardised gcc toolchain from the 90s, it's fairly likely that cmake supports it out of the box. Code like that is the price to pay for that level of support. [0] https://github.com/boostorg/beast/blob/b7344b0d501f23f763a76... |
|
As for
I am not really sure what to say.And then for CHECK_FUNCTION_EXISTS();, there are a few rare compilers that do not throw an error at compile-time if said function does not exist.
Also, I have been told that cmake-generated Makefiles invoke cmake itself, so you can't really generate portable Makefiles with it. In addition to that, I have been told that cmake takes ages to compile.
> meaning that in my code I don't need to do stuff like [0] in my code to detect features
I find that much better honestly.