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.

  • bahmanmOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 months ago

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

    • JoYo
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      10 months ago

      RMS notoriously fought against variables in make

      • bahmanmOP
        link
        fedilink
        English
        arrow-up
        2
        ·
        10 months 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.