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

As of automake 1.11, you can greatly clean up the output using the silent-rules option. For example:

$ # 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: リンク: 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
$ make clean all
 rm -f foo bar baz qux
rm -rf .libs _libs
rm -f *.o
rm -f *.lo
オールアムにする
  CC foo.o
  CCLD フー
  CC bar.o
  CCLDバー
  CC バゾ
  CCLDバズ
  CC qux.o
  CCLD qux

必要なのは、configure.ac で AM_INIT_AUTOMAKE の呼び出しに「silent-rules」を追加し、configure を呼び出すときにオプション --enable-silent-rules を追加することだけです。(この機能が追加されたとき、configure 時にオプションを追加する必要があることについては多くの議論があり、それを不要にする簡単な回避策があります。) サイレントルールを有効にしても、' V=1'にする

于 2010-05-23T08:12:56.330 に答える
2

私は同じ船に乗っているので、少しグーグルで調べました。autoconfツールはうまく機能しますが、テキストがぐるぐると通り過ぎて、それが何であるかを知る方法がないと、目を壊します...ここにリンクがありますこれを行うためのツールに言及し、カーネルビルドが魔法のように見えるのと同じように、よりきれいに見えるようにするブログに。

foo.so のコンパイル
foo.so のリンク

prettify automakeと呼ばれるツールへの別のリンクを次に示します。

于 2010-05-22T09:52:05.293 に答える