代码之家  ›  专栏  ›  技术社区  ›  Brendan Long

如何使汽车制造不那么难看?

  •  11
  • Brendan Long  · 技术社区  · 14 年前

    我最近学习了如何使用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 回复  |  直到 14 年前
        1
  •  18
  •   William Pursell    14 年前

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

    $ # 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
    

    只需要在调用中添加“静默规则”。 在configure.ac中自动创建,并添加选项 --调用配置时启用静默规则。(那里) 关于要求增加选择权有很多争论 在添加此功能的配置时, 是一个简单的解决方案,使其不必要。)请注意 启用静默规则后,您仍然可以获得详细信息 运行“make v=1”输出

        2
  •  3
  •   t0mm13b    14 年前

    我像在同一条船上一样在谷歌上搜索了一下,autoconf工具做得很好,但是当文本飞驰而过时,它会破坏你的眼睛,而且无法知道那是关于什么的……这里有一个链接指向 blog 这提到了一个工具来做这件事,让它看起来更整洁,就像你看到内核构建的方式一样有魔力,也就是说。

    Compiling foo.so
    Linking foo.so
    

    这是另一个链接,指向一个称为 prettify automake .