On Tue, 2014-01-28 at 09:52 -0800, David Boyce wrote:
> I think the headline here is that $(file) is analogous to $(shell) in
> that it's intended specifically for use _outside_ of recipes. If you
> find yourself using either one in a recipe it's probably a sign you're
> on the wrong track.

I'm not sure I'd go that far.  $(shell ...) really _is_ useless in a
recipe because make will invoke a shell to run the recipe anyway, so why
have it invoke two shells?  It's just redundant.

However, $(file ...) can be useful in a recipe especially on systems
which have limited command line lengths (Windows for example)... in fact
I'd say that this is one of the main reasons people wanted $(file ...).

You can use it in a recipe to create an @-file, for example, for input
to a program where just using $^ directly would be far too large for the
command line.

But there's no real point in deleting the file first with "rm", since
the ">" operator will truncate it anyway.  I guess there might be _some_
small reason to try to delete it with "rm -rf" if you suspect it might
already exist as a directory.


Now that I think about it, I just did come up with a valid reason to use
$(shell ...) in a recipe!

  foo:
          $(shell rm -rf biz)
          $(file > biz, hello there)

:-p :-)


_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to