我最近学会了如何使用 automake,我有点恼火的是我的编译命令来自一堆:
g++ -O2 -Wall -c fileName.cpp
致一堆:
depbase=`echo src/Unit.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT src/Unit.o -MD -MP -MF $depbase.Tpo -c -o src/Unit.o src/Unit.cpp &&\
mv -f $depbase.Tpo $depbase.Po
有什么办法可以清理掉吗?我通常可以轻松地找出警告消息,但现在要阅读的文本墙扩大了 3 倍,而且更加奇怪。
我知道我的标志是什么,所以让它只为每个文件显示“编译 xxx.cpp”将是完美的。
最佳答案
从automake 1.11开始,您可以使用silent-rules选项极大地清理输出。例如:
$ # First, make without silent rules $ make make all-am gcc -DHAVE_CONFIG_H -I. -g -O2 -MT foo.o -MD -MP -MF .deps/foo.Tpo -c -o foo.o foo.c mv -f .deps/foo.Tpo .deps/foo.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o foo foo.o libtool: link: gcc -g -O2 -o foo foo.o gcc -DHAVE_CONFIG_H -I. -g -O2 -MT bar.o -MD -MP -MF .deps/bar.Tpo -c -o bar.o bar.c mv -f .deps/bar.Tpo .deps/bar.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o bar bar.o libtool: link: gcc -g -O2 -o bar bar.o gcc -DHAVE_CONFIG_H -I. -g -O2 -MT baz.o -MD -MP -MF .deps/baz.Tpo -c -o baz.o baz.c mv -f .deps/baz.Tpo .deps/baz.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o baz baz.o libtool: link: gcc -g -O2 -o baz baz.o gcc -DHAVE_CONFIG_H -I. -g -O2 -MT qux.o -MD -MP -MF .deps/qux.Tpo -c -o qux.o qux.c mv -f .deps/qux.Tpo .deps/qux.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o qux qux.o libtool: link: gcc -g -O2 -o qux qux.o $ # Now, use the silent rules $ ./configure --enable-silent-rules > /dev/null $ make clean all rm -f foo bar baz qux rm -rf .libs _libs rm -f *.o rm -f *.lo make all-am CC foo.o CCLD foo CC bar.o CCLD bar CC baz.o CCLD baz CC qux.o CCLD qux
所需要做的就是将“silent-rules”添加到调用中 在configure.ac中添加AM_INIT_AUTOMAKE,并添加该选项 --enable-silent-rules 当您调用配置时。 (那里 关于是否需要添加该选项存在很多争议 在配置时添加此功能,并且有 是一个简单的解决方法,可以使其变得不必要。)请注意 启用静默规则后,您仍然可以得到详细信息 通过运行“make V=1”输出
关于makefile - 如何让automake不那么难看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2886559/