BTW we use a slightly different and, I think, slightly improved version of
what's shown there (see below). Improvements are:
1. Either the verbose or the concise output is shown, vs both in verbose
mode as the original does.
2. It uses $(info ...) instead of echo which saves a fork/exec per recipe
(note: this is safe only when used in the first recipe line).
3. It provides a default "MAKING $@" message as demonstrated in the example.
4. A special case is used to ensure the clean target is always verbose.
David
$ cat Makefile
.PHONY: all
all: hola
ifeq ($(V),)
vb = $(info $(or $1,MAKING $(@F)))
.SILENT:
endif
hola: hola.o
$(call vb)
$(CC) -o $@ $(LDFLAGS) $^ $(LDLIBS)
%.o: %.c
$(call vb,CC $(<F) -> $(@F))
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $<
.PHONY: clean
clean: clean_recipe = $(RM) *.o hola
clean:
@$(info $(clean_recipe))
@$(clean_recipe)
$ make clean; make
rm -f *.o hola
CC hola.c -> hola.o
MAKING hola
$ make clean; make V=1
rm -f *.o hola
cc -c -o hola.o hola.c
cc -o hola hola.o
On Sat, Oct 23, 2021 at 6:06 AM Paul Smith <[email protected]> wrote:
> On Sat, 2021-10-23 at 03:01 +0200, Alejandro Colomar (man-pages) wrote:
> > I'd like a project to use '--silent' by default, to have readable
> > output, and hide most of the full commands, which would be too
> > noisy.
> >
> > So, ideally, I'd like to have 'MAKEFLAGS += --silent' in the
> > Makefile.
>
> Actually what you really want is the .SILENT special target.
>
>
> https://www.gnu.org/software/make/manual/html_node/Special-Targets.html#index-_002eSILENT
>
> That leads to this best-practice way to handle verbose output:
>
> http://make.mad-scientist.net/managing-recipe-echoing/
>
>
>