2014-11-04 43 views
0

我有一個生成文件,其中的一個目標看起來如下:子調用的輸出控制爲`make`

task: $(foreach t,$(SUBDIRS),subtask_$t) 

subtask_%: 
     make -C $* subtask 

在詞語,task運行在每個生成文件中定義的subtask球,在目錄中找到的列表$(SUBDIRS)。默認情況下,輸出到控制檯是子任務的所有輸出的組合。有沒有簡單輸出的方法,例如$* SUCCESS$* FAILED取決於退出代碼?

我試過使用@make...,但是這並不掩蓋從其他Makefiles運行的命令的輸出。

理想情況下,我想保持子Makefiles不變,因爲我仍然偶爾想直接使用它們並獲得完整的輸出。

+2

爲什麼不重定向stdout&stderr?像在你的子任務命令中的'make -C $ * subtask 2>&1> subtask/make.log'一樣? – 2014-11-04 16:27:11

+0

@TimothyBrown感謝您指出簡單的解決方案。如果你把它寫成答案,我可以接受它。 – Philippe 2014-11-04 20:01:32

回答

1

一種可能的方式是讓每個子任務將其輸出寫入它自己的日誌文件。如:

subtask_%: 
     make -C $* subtask 2>&1 > subtask/make.log