this post was submitted on 14 Sep 2023
6 points (87.5% liked)

General Programming Discussion

7814 readers
1 users here now

A general programming discussion community.

Rules:

  1. Be civil.
  2. Please start discussions that spark conversation

Other communities

Systems

Functional Programming

Also related

founded 5 years ago
MODERATORS
 

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.

you are viewing a single comment's thread
view the rest of the comments
[โ€“] JoYo@lemmy.ml 0 points 1 year ago (3 children)
[โ€“] bahmanm@lemmy.ml 1 points 1 year ago (2 children)

Uh, I'm not sure I understand what you mean.

[โ€“] JoYo@lemmy.ml 0 points 1 year ago (1 children)

RMS notoriously fought against variables in make

[โ€“] bahmanm@lemmy.ml 2 points 1 year ago

I think I understand where RMS was coming from RE "recursive variables". As I wrote in my blog:

Recursive variables are quite powerful as they introduce a pinch of imperative programming into the otherwise totally declarative nature of a Makefile.

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.