如何让automake不那么难看?

时间:2010-05-22 01:23:40

标签: makefile automake gnu-make

我最近学会了如何使用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”就完美了。

2 个答案:

答案 0 :(得分:18)

从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,并添加该选项 调用configure时的--enable-silent-rules。 (那里 关于要求添加选项的争论很多 在配置时添加此功能,并在那里 这是一个简单的解决方法,使它不必要。)请注意 启用静默规则后,您仍然可以获得详细信息 通过运行'make V = 1'输出

答案 1 :(得分:3)

当我在同一条船上时,我做了一些谷歌搜索,autoconf工具做得很好,但当文本嗖嗖地说,并且无法知道那是什么时,它会弄乱你的眼睛......这里是blog的一个链接,它提到了一个工具来做这个,并使它看起来像整洁,就像你看到内核构建的神奇,即

Compiling foo.so
Linking foo.so

以下是指向prettify automake的工具的另一个链接。