Search code examples
shellmakefiletee

'tee' in makefile, can we copy stderr as well?


I hope to record the result of stderr & stdout to different files, while watching both outputs from the terminal.

So I use tee, and found a solution in this page.

But the sad thing is, it can't work when put into a makefile:

all:
    @command > >(tee stdout.log) 2> >(tee stderr.log >&2)

It seems that make will use sh -c to execute this line, which doesn't understand well about the syntax.

Can we have another solution for this?


Solution

  • In order to use this syntax in your Makefile you need to change the shell that make uses for running commands by setting the SHELL variable.

    By invoking make using: make SHELL=/bin/bash, or putting SHELL:=/bin/bash at the start of the Makefile it should accomplish this.