2012-04-01 67 views
7

我有一個簡單的Makefile:使[1]:進入目錄錯誤消息

default: 
    @make build 
    @make run 

build: 
    @javac Test.java > /dev/null 

run: 
    @java Test 

在編譯期間,使輸出:

make[1]: Entering directory `<current directory'> 
... 
make[1]: Leaving directory `<current directory'> 

我需要使建立不打印這些消息。有人知道問題或如何抑制這些消息嗎?

感謝


編輯:發生這種情況無論代碼。例如它發生與:

class Test { 

    public static void main(String[] args) { 
     System.out.println("HELLO WORLD"); 
    } 
} 
+1

什麼是你的代碼運行make?我們猜不到...... – Neal 2012-04-01 19:15:20

+0

爲什麼要用make編譯Java? (我猜「因爲教官這樣說」雖然)。 – millimoose 2012-04-01 19:16:09

+0

@尼爾抱歉,編輯包含代碼片段。和Inerdial,我們使用make,因爲語言的選擇取決於我們。導師只需要調用我們所有不同的程序的統一方式。 – noobler 2012-04-01 19:34:04

回答

11

變化makemake -s

default: 
    @make -s build 
    @make -s run 

更妙的是:

default: 
    @$(MAKE) -s build 
    @$(MAKE) -s run 

更妙的是:

default: run 

build: 
    @javac Test.java > /dev/null 

run: build 
    @java Test 
+0

+1爲'更好'的解決方案。 – 2012-04-01 19:59:39

+0

甚至更​​好。將.PHONY標籤添加到構建和運行目標。 – 2015-04-30 06:07:13

10

make -s也抑制其他生成文件消息,這對開發人員可能很重要。如果要抑制「進入/離開目錄信息」僅與

make --no-print-directory

+0

>這隻適用於GNU Make。 [使沉默製作的技巧](http://www.gnu.org/software/automake/manual/html_node/Tricks-For-Silencing-Make.html)。 – Sharadh 2015-05-19 08:38:04