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?
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.