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