2014-12-12 99 views
0

我正在使用CentOS 6.5。当我做一个补充,我通常看到完整的GCC/G ++命令中的Makefile文件执行时,像如何恢复g ++/gcc编译信息

... 
gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I/opt/emacs/emacs-24.3/lib -I../src -I/opt/emacs/emacs-24.3/src  -g3 -O2 -MT pthread_sigmask.o -MD -MP -MF .deps/pthread_sigmask.Tpo -c -o pthread_sigmask.o pthread_sigmask.c 
... 

但在一些系统中,我只看到:

$ make 

Building test1.o... 

Building test2.o... 

...

是否可以将“Building ...”消息更改回完整的gcc/g ++命令输出?

+0

你输入了'make -s'还是有别名?那么makefile中的@字符呢?没有更多的上下文,很难说出发生了什么。 – 2014-12-13 00:25:51

+0

对于一些构建系统,'make VERBOSE = 1'更冗长...... – 2014-12-13 20:55:52

回答

1

当您使用给定的makefile 运行make时,您看到的输出取决于makefile的写入方式。您将看到makefile的作者希望您看到的 输出。

如果在生成文件配方一个命令与@前缀, 然后make不会呼应命令。所以如果我的makefile是,例如

foobar: foobar.o 
    gcc -o [email protected] $< 

foobar.o: foobar.c 
    gcc -c -o [email protected] $< 

那么make输出将是:

gcc -c -o foobar.o foobar.c 
gcc -o foobar foobar.o 

但是,如果我改变了生成文件:

foobar: foobar.o 
    @echo "Linking foobar" 
    @gcc -o [email protected] $< 

foobar.o: foobar.c 
    @echo "Compiling foobar" 
    @gcc -c -o [email protected] $< 

则输出变为:

Compiling foobar 
Linking foobar 

所以看到那个输出您宁愿看到您将不得不编辑 makefile,从您期望看到的命令中删除@-前缀 并完全删除打印“Building ...”消息的命令。

至少,这是你需要做的,如果你用这种方式打扰你的makefiles使用直接调用gcc/g ++的配方来构建目标。它可能使用配方调用一些中间 工具来构建其目标,该工具不会回显编译器命令,而是发出“Building ...” 消息。没有看到makefile(s)我不能说。