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 <psm...@gnu.org> 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/
>
>
>
  • -V, --verbose... Alejandro Colomar (man-pages)
    • Re: -V, ... Paul Smith
      • Re: ... David Boyce
        • ... Alejandro Colomar (man-pages)
          • ... Paul Smith
            • ... Alejandro Colomar (man-pages)
    • Re: -V, ... Dmitry Goncharov via Bug reports and discussion for GNU make

Reply via email to