如何将屏幕输出保存到Makefile中的文本文件

时间:2013-11-07 01:04:35

标签: linux perl makefile

我使用原始的makefile来使用makefile编写的Perl脚本构建我的代码。

现在我想将屏幕上显示的所有日志打印到txt文件。

为了做到这一点,我可以在makefile中使用什么命令?

我本来打算在makefile中使用一些命令将屏幕上显示的内容输出到txt文件。 例如,如果makefile看起来像:

all:

  perl filename.pl 

我应该怎么写我的makefile,这样每次在命令行输入“make all”时,它会自动将输出保存到txt文件中?

嗨现在我需要改进它,我需要将输出保存到txt文件,其目录应该根据我的perl脚本的输入。

例如,在makefile中:

所有

 $(X)make -C .. DIR=$(DIR) Y=$(Y) Z=$(Z)
 perl filename.pl $(DIR)/$(Y)/i.lst 2>&1 | tee log.txt

我应该如何更改makefile,以便将log.txt保存在目录等于输入$ DIR?我还想将名称“log”更改为输入,我该怎么做?

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

你可以有一个make规则,以递归方式调用make,将事物重定向到文件:

all:
        $(MAKE) everything >log.txt

everything: ...whatever you had before for all

当然,如果您只有一个命令,那么您也可以将重定向放在那里:

all:
        perl filename.pl >log.txt

如果您希望输出同时显示在屏幕上并复制到文件中,您可以使用tee

all:
        perl filename.pl | tee log.txt

..如果你想在文件中包含stderr输出,你也可以重定向:

all:
        perl filename.pl 2>&1 | tee log.txt

答案 1 :(得分:1)

从命令行,将make的输出汇总到文本文件应该非常简单:

make > new_file.txt

如果您想要连接而不是每次更换,请使用两个箭头:

make >> new_file.txt