【问题标题】:How to make automake less ugly?如何让 automake 不那么难看?
【发布时间】:2011-02-22 14:44:19
【问题描述】:

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

【问题讨论】:

    标签: makefile automake gnu-make


    【解决方案1】:

    从 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

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

    【讨论】:

    • 看起来只要添加 AM_SILENT_RULES([yes]) 就可以了。这正是我想要的。
    • 谢谢;将AM_SILENT_RULES([yes]) 本身添加到configure.ac,就在AM_INIT_AUTOMAKE 行之后,就成功了。更好的输出。
    • 对不起这里的 necrocommenting ... 我遇到了与原始海报相同的问题。对我来说,如果我的 make 输出看起来像您最初的“没有静默规则”示例,那就没问题了。这似乎很标准。但是我的带有各种 sed 行,例如 OP,尤其是处理“depbase”变量。老实说,这对眼睛来说很难。有什么方法可以清除该部分并保留编译命令?
    【解决方案2】:

    当我在同一条船上时,我做了一些谷歌搜索,autoconf 工具做得很好,但是当文本飞速掠过并且无法知道那是什么时,它有点毁了你的眼睛......这里是一个指向blog 的链接,它提到了一个工具来执行此操作并使其看起来更整洁,就像您看到内核构建的神奇之处一样,即

    编译 foo.so 链接 foo.so

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

    【讨论】:

    • 两个链接都失效了。
    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    相关资源
    最近更新 更多