On Wednesday, 20 September 2023 at 15:24:52 UTC, Andrey Zherikov wrote:
On Thursday, 7 September 2023 at 17:34:48 UTC, Atila Neves wrote:
https://code.dlang.org/packages/reggae

For those who don't know, reggae is a meta-build system for and in D. It's like CMake, if you replace their terrible language with D*. Like CMake, it can output make and ninja files. Unlike CMake, it can also output tup files and has its own binary generator in case the dependency on one of those programs is undesired. Also unlike CMake, it supports dub projects out-of-the-box by using dub as a library.

Out of curiosity, why do we need one more build tool?

Because we don't have one now. Using CMake for D is horrible, and none of the alternatives are that much better. Hand-written Makefiles are a nightmare and will never get dependencies right. dub isn't a build system, although it includes a very limited one that can't be extended. Want to build D and C++ code in the same project? Hah, good luck.

TBH I had the same thought - we should have "good" build tool for D that has D as a language. Since I have some experience with CMake and agree with a lot of people that it have horrible language, I thought it would be beneficial. But then I looked round and realized that it will be like this:

In practice, this doesn't seem to happen with build systems. Instead each language ecosystem ends up using its own: CMake, Gradle, Rake, ...

Have you looked as Meson, for example - it even has a [section about D](https://mesonbuild.com/D.html)?

Yes, and even had to use it for D. I don't know what state it's in now, but it was pretty much unusable if one had dub dependencies which... is nearly always the case.

Then there's the language: I'd rather use D or Python. If anything, Meson's use case could be questioned just as well by "why another build language?".


Reply via email to