cross-posted from: https://lemmy.ml/post/4908824
There are two major flavours of variables in GNU Make: “simple” and “recursive”.
While simple variables are quite simple and easy to understand, they can be limiting at times. On the other hand, recursive variables are powerful yet tricky.
…
There is exactly one rule to recall when using recursive variables…
🧠 The value of a recursive variable is computed every time it is expanded.
it’s that illegal?
Uh, I’m not sure I understand what you mean.
RMS notoriously fought against variables in make
I think I understand where RMS was coming from RE “recursive variables”. As I wrote in my blog:
They extend the capabilities of Make quite substantially. But like any other powerful tool, one needs to use them sparsely and responsibly or end up w/ a complex and hard to debug Makefile.
In my experience, most of the times I can avoid using recursive variables and instead lay out the rules and prerequisites in a way that does the same. However, occasionally, I’d have to resort to them and I’m thankful that RMS didn’t win and they exist in GNU Make today 😅 IMO purist solutions have a tendency to turn out impractical.