2012-04-01 58 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