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
        ·
        1 year ago

        RMS notoriously fought against variables in make

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