我希望將stderr & stdout的結果記錄到不同的文件中,同時觀察終端的兩個輸出。makefile中的'tee',我們可以複製stderr嗎?
所以我用tee
,並找到了解決方案this page。
但可悲的是,放入生成文件時,它無法工作:
all:
@command > >(tee stdout.log) 2> >(tee stderr.log >&2)
看來make
將使用sh -c
執行這條線,它不有關語法很好地理解。
我們可以有其他解決方案嗎?
我希望將stderr & stdout的結果記錄到不同的文件中,同時觀察終端的兩個輸出。makefile中的'tee',我們可以複製stderr嗎?
所以我用tee
,並找到了解決方案this page。
但可悲的是,放入生成文件時,它無法工作:
all:
@command > >(tee stdout.log) 2> >(tee stderr.log >&2)
看來make
將使用sh -c
執行這條線,它不有關語法很好地理解。
我們可以有其他解決方案嗎?
爲了用這個語法你Makefile
你需要改變通過設置SHELL
變量生成的shell用於運行命令。
通過調用make使用:make SHELL=/bin/bash
或將SHELL:=/bin/bash
置於Makefile
的開頭,它應該完成此操作。
蠻力方法是不會在makefile發球而是尾-f在後臺的一個文件:
$ tail -f stderr.log & tail -f stdout.log
[... ^C]
$ kill $!
'tee'作品;這是'make'使用的shell不理解的進程替換。 – chepner 2013-05-09 15:02:09
一個解決方法是使用'make SHELL =/bin/bash'或者在shell的'Makefile'的開頭放置'SHELL:=/bin/bash',將變量'SHELL'設置爲'/ bin/bash' 。 – Petesh 2013-05-09 15:08:55
感謝@Petesh,你可以發佈答案,以便我可以將此標記爲已解決? – sleepsort 2013-05-09 15:11:28