11

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

4

2 回答 2

18

从 automake 1.11 开始,您可以使用静默规则选项大大清理输出。例如:

$ # 一、make无静默规则
$ 制作
做全是
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:链接: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:链接: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:链接: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:链接:gcc -g -O2 -o qux qux.o
$ # 现在,使用静默规则
$ ./configure --enable-silent-rules > /dev/null
$ 全部清理
 rm -f foo bar baz qux
rm -rf .libs _libs
rm -f *.o
rm -f *.lo
做全是
  抄送
  CCLD 富
  抄送吧.o
  CCLD棒
  CC baz.o
  CCLD巴兹
  抄送qux.o
  CCLD qux

所需要做的就是在 configure.ac 中将“silent-rules”添加到 AM_INIT_AUTOMAKE 的调用中,并在调用 configure 时添加选项 --enable-silent-rules。(在添加此功能时需要在配置时添加该选项存在很多争论,并且有一个简单的解决方法可以使其变得不必要。)请注意,启用静默规则后,您仍然可以通过运行来获得详细输出 '使 V=1'

于 2010-05-23T08:12:56.330 回答
2

当我在同一条船上时,我做了一些谷歌搜索,autoconf 工具做得很好,但是当文本飞速掠过并且无法知道那是什么时,它会破坏你的眼睛......这是一个链接到一个博客,它提到了一个工具来做到这一点,让它看起来更整洁,就像你看到内核构建的神奇之处一样,即

编译 foo.so
链接 foo.so

这是另一个名为prettify automake的工具的链接。

于 2010-05-22T09:52:05.293 回答