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.

      • JoYo@lemmy.ml
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        1
        ·
        3 years ago

        RMS notoriously fought against variables in make

        • bahmanm@lemmy.mlOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          3 years 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.