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?".